????????

Summary: The Pomodoro Event Bot is a Discord bot with pomodoro tracking features and support for multi-server deployments and cross-server leaderboards.

Terms

The term “Reserved” is used to indicate that the usage of a feature is limited to a configurable subset of users, for example server moderators.

The term “profile” is used to indicate the identity of a certain user on a certain guild. This means my profile on PC is seen as different from my profile on KOA.

Technologies used

Passed. Reason: Same as other specs

Discord Bot Behavior

Most users are able to do two things: add a pomodoro to their counter (and as such to the corresponding Guild counter) and view the statistics.

Counter

The pomodoro counting system is composed of the following commands:

  • Add a pomodoro to oneself: !pom or !pom +
  • Reserved: Add a pom to someone else: !pom + @user
    • This command supports adding, subtracting and numbers different from one, for example !pom +2 or !pom -5.
    • Other usages: !pom reset @user to reset the pomodoro count of a user, !pom ^N @user to set it to a specific number (here N).
  • View the statistics: !score
    • This command shows information for about all servers linked to the current one. This means that if we link PC and KOA, it will show the global counter for both.

Internally, the bot keeps track of statistics for each profile. No server-wide counter is kept in memory as one can be computed from the information present on each profile.

Summary: The Habitica Upvote Bot is a Habitica bot that upvotes posts made by Alex a certain amount of times and following defined criteria. Communication between the Alex and the bot will be done on Discord.

Technologies used

The following technologies shall be used in the making of this bot:

  • Language: NodeJS
  • Discord library: DiscordJS
  • Logging: Bunyan
  • Habitica thin wrapper: habitica

Discord Bot Behavior

Sadly, the Habitica API doesn't have an endpoint to fetch messages made by a certain user. This means Alex has to manually inform the bot whenever he sends a message somewhere. The !habitica check command will enable him to do this, used as follows:

!habitica check [group id] [?number of upvotes]

The bot will fetch a list of messages made in that group, find the last one made by Alex and upvote it a certain number of times. The bot shall save the IDs of messages it upvoted in a file.

Habitica Bot Accounts

In order to upvote a post X times, we will need X Habitica accounts. These accounts shall be called “bot” accounts, with upvoting as their only purpose. X is limited to be 15 at maximum.

To prevent the Habitica moderators to catch on, bot rotation shall be put in place. This means we shall have about 25 bot account to use, and the bot will randomly select X bots in that pool to get its job done.

The list of bots will be stored in their own configuration file.