The Sonia application for Discord
Community:
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
Commands:
- cookie
- cookies (alias)
- c (shortcut)
Sonia will send you a message containing:
- A cookie (a tasty one).
Example:
@Sonia !cookie
@Sonia !C
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
Commands:
- feature
- f (shortcut)
Features (first and only argument followed by optional flags):
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 behaviour 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.
- noon
Configure the message sent at noon on the given channel.
The default timezone is Europe/Paris and this will be configurable later.
- disabled (or d): disable the noon message on the channel
- enabled (or e): enable the noon message on the channel
- help (or h): get some help with this command
- humanize (or hu): display the current configuration
- status (or s): display if the feature is enabled or not
- release-notes
Configure the message containing the new release notes on the given channel.
- disabled (or d): disable the release notes message on the channel
- enabled (or e): enable the release notes message on the channel
- help (or h): get some help with this command
- humanize (or hu): display the current configuration
- status (or s): display if the feature is enabled or not
Example:
@Sonia !feature noon
@Sonia !F
Commands:
- heartbeat
- hb (shortcut)
Sonia will send you a message containing:
- Her heartbeat (her ping).
Example:
@Sonia !heartbeat
@Sonia !hb
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
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
Commands:
- quote
- q (shortcut)
Sonia will send you a message containing:
- A random quote
Example:
@Sonia !quote
@Sonia !q
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
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 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.
Sonia will respond to each of your messages but within a predefined priority:
- commands (handle the commands if you follow the right syntax)
- ping (respond pong)
- hotel (respond trivago)
- any question? (respond a pizza lover joke)
- default message (when your message is very basic, Sonia will tell you that it is noon, as usual (even if it is untrue))
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.
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.
Sonia will respond to each of your messages but within a predefined priority:
- commands (handle the commands if you follow the right syntax)
- ping (respond pong)
- hotel (respond trivago)
- any question? (respond a pizza lover joke)
- simple (respond basic)
- basic (respond simple)
- default message (when your message is very basic, Sonia will tell you that it is noon, as usual (even if it is untrue))
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.
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:
- A link to create a new GitHub issue.
- A link to reach us in Discord.
Sonia sends the generic Discord errors to the Sonia Discord errors channel.
Sonia sends the generic Discord warnings to the Sonia Discord warnings channel.
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.
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 Elf 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.
Check out the contributing file before helping us.
This project is licensed under the MIT License - see the license for details.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification.
Contributions of any kind are welcome!