@sonia-corporation/il-est-midi-discord

1.78.0 • Public • Published

Sonia il est midi

Sonia "il est midi" application for Discord

Quality:
GitHub last commit Maintainability CodeFactor DeepScan grade Test Coverage codecov Mutation testing badge GitHub issues GitHub pull requests Build Release Dependencies Dev Dependencies semantic-release code style: prettier

Community:
All Contributors commitizen PRs Discord

Statistics:
GitHub release (latest by date) GitHub top language GitHub repo size GitHub code size in bytes GitHub

Sonia bot

Sonia commands

Sonia will treat one command at a time.
You can use either -, ! or $ as prefix for the commands.
There is no case sensitivity.

Example:

  • @Sonia -version
  • @Sonia !VERSION
  • @Sonia $v

Cookie

Commands:

  • cookie
  • cookies (alias)
  • c (shortcut)

Sonia will send you a message containing:

  • A cookie (a tasty one).

Example:

  • @Sonia !cookie
  • @Sonia !C

Error

Commands:

  • error
  • bug (alias)

Sonia will send you a message containing:

  • A description of the error.
  • Some nasty bullshit text.
  • This is a useless feature, please, continue.
  • We are very sorry about that. We think.

Example:

  • @Sonia !error
  • @Sonia !BUG

Feature

Commands:

  • feature
  • f (shortcut)

Features (first and only argument followed by optional flags):

  • noon: configure the message sent at noon
    • enabled (or e): enable the noon message on the channel

This is a special command used to configure Sonia only for the current Guild or channel.
There are multiples option to customize Sonia (some will change her behavior on the whole Guild and other only for the current channel).

Sonia will send you a message containing information about the changes you just made.
Basically she will try to help you if you fill bad information and just inform you if the changes were successful.

Example:

  • @Sonia !feature noon
  • @Sonia !F

Help

Commands:

  • help
  • h (shortcut)

Sonia will send you a message containing:

  • A list of all the commands available.
  • The application readme link.

Example:

  • @Sonia !help
  • @Sonia !H

Lunch

Commands:

  • lunch
  • l (shortcut)

Sonia will send you a message containing:

  • A reminder that this is lunch-time for you.

Example:

  • @Sonia !lunch
  • @Sonia !L

Release notes

Commands:

  • release-notes
  • r (shortcut)

Sonia will send you a message containing:

  • The application version (as a link).
  • The application release date.
  • The application release notes.
  • The application changelog link.
  • The total release count.

Example:

  • @Sonia !release-notes
  • @Sonia !r

Version

Commands:

  • version
  • v (shortcut)

Sonia will send you a message containing:

  • The application version (as a link).
  • The application release date.
  • The application initialization date.
  • The application release notes (first 800 chars).
  • The application changelog link.
  • The application status.
  • Her emotional state.
  • The total release count.

Example:

  • @Sonia !version
  • @Sonia !VERSION
  • @Sonia !v
  • @Sonia !V

Sonia behavior

Sonia will never respond to herself - no infinite loop :(
Sonia will never respond to another bot - love between them will not be tolerated.
Sonia has nothing to hide and thus she displays her current activity.

In a private channel (also known as DM)

Sonia will respond to each of your messages.
Special commands will be handled as a priority.

When your message is very basic, Sonia will tell you that it is noon, as usual (even if it is untrue).

In a public text channel (also known as text)

For now, Sonia cannot be configured over which channel she responds to.
In the future, Sonia will be disabled by default on all channels.
A command will enable Sonia on the given channel (a command will also be available to disable her).
This dev is a bit more complicated because Sonia will have to store which channels are ready for her or not in a database.

To avoid flooding, Sonia will tell you that it is noon in some conditions.
First of all, she will tell the general channel that it is noon when it is noon.
That is the main goal after all...
The default timezone is Europe/Paris.
In the future, when enabling this feature on a given channel, you will be able to customize the timezone used.

When a message on the channel is sent, Sonia will only respond if she is mentioned personally.
This counts as a DM response for Sonia, so prepare to have a friendly message dedicated to you.
Special commands will be handled as a priority.

Example:

@Sonia yo

On global mentions like @here and @everyone, Sonia will send a message to tell everybody it is noon (even if it is a lie).

To use a command, you must ask her personally.

Example:

@Sonia !version

Guild new member welcome message:

When a newcomer joins the channel, Sonia will send a friendly message to welcome them.
For now, the only channel receiving welcome messages will be the general.
It will also work if accents are used such as général.

Sonia new guild message:

When Sonia joins a new guild, she will send a cookie to the general channel.

New guild member:

When a new member joins your guild, she will send a message on the general channel to welcome him.

New release notes:

When a new version of Sonia is available, she will send a message on the general channel containing basically the release-notes command.

Note:

Works with Firebase. See the Firebase section to learn more about it.

Errors

If Sonia receives a Discord error after sending a message she will send a new message containing this error to help you to debug it.

Nevertheless, sometimes the error is purely developmental and this is why Sonia will provide:

Sonia sends the generic Discord errors to the Sonia Discord errors channel.

Warnings

Sonia sends the generic Discord warnings to the Sonia Discord warnings channel.

Firebase

Because Sonia is more and more enhanced as the time fly and that each guild wants to configure Sonia differently a storage solution was required.
Firebase was used to have a dedicated storage and allow basically to do whatever we want.

Guilds

Each guild has its own configuration through Firebase based on the guild's Snowflake.
Basically, any option edited via Sonia's commands is stored per guild on a Firestore.
The guilds have a version to easily maintain and handle the breaking changes during the new releases.
The breaking changes are handled at the start of the application and no other operation related to Firebase guilds are allowed during that time.
Once the breaking changes are handled the Firestore is watched and any changes that occurred trigger a DML with an Akita store.
This is a very efficient way to handle the data and avoid performance issues related to Network.

Once the store loading is done - where the first Firebase guilds were received -, Sonia will try to send the release notes on each guild.

Contributing

Check out the contributing file before helping us.

License

This project is licensed under the MIT License - see the license for details.

Contributors

Thanks goes to these wonderful people (emoji key):


Geoffrey 'C0ZEN' Testelin

💻 🎨 🚇 🤔 📝 📖 🔧 🛡️ 👀 💬 🚧 🐛

All Contributors

📖 🔧

WhiteSource Renovate

🔧 🛡️

Semantic Release Bot

📖 🔧 🛡️

Vilteros

💻 🤔 📖 👀

Nathan Bergamini

💻 🤔

asmodee-bellanie

👀

Automated code reviews

👀 🐛

This project follows the all-contributors specification.
Contributions of any kind are welcome!

Package Sidebar

Install

npm i @sonia-corporation/il-est-midi-discord

Weekly Downloads

97

Version

1.78.0

License

MIT

Unpacked Size

2.24 MB

Total Files

11

Last publish

Collaborators

  • c0zen