Skip to content

Feature: Cake Day#1042

Open
christolis wants to merge 19 commits intoTogether-Java:developfrom
christolis:feature/cake-day
Open

Feature: Cake Day#1042
christolis wants to merge 19 commits intoTogether-Java:developfrom
christolis:feature/cake-day

Conversation

@christolis
Copy link
Copy Markdown
Member

@christolis christolis commented Mar 3, 2024

I know that this is not a certain feature to be added, but I still wanted to experiment and see what I could come up with :)

Description

This pull request introduces the addition of the cake day feature to the server, allowing members to commemorate their annual membership anniversary with a unique "Cake day" role, with which they can celebrate within the community.

This feature uses the database and makes a cake_days table in order to store each member's joined date, as well the guild in which they joined (in case the bot ever gets to handle multiple guilds). The date stored in the database is split into two columns: the month and the day in one (joined_month_day), and the year in an other (joined_year). The reason the join date is split into these two columns is so that an index can be added for the joined_month_day column in order to make reading from the database faster. Therefore, it will be easier for the bot to find all cake days by the month and day, a search that would occur daily by this feature's routine.

If the bot finds that the cake_days table has no records, then it attempts to populate the table from all members of all guilds in a separate thread with batched insert queries in order to optimize the table population task.

Configuration changes

Property Description Type Default
cakeDayConfig.rolePattern A pattern of the cake day
role to give to members.
String "Cake Day"

Diagram

image

TODO

  • Write JavaDocs for all new code.
  • Implement cake-day role re-assignment daily. First it should revoke the role from all members, then based on the day's month and day, it should find all matching cake days and for the matches where the year difference is bigger than 0, assign them the role and whatever cosmetic stuff necessary.
  • Talk with the team about whether changing the member cache policy as well as the chunking filter to all is a valid approach for fetching all members of the server (is it worth storing all member references in memory just for one bulk database insert that will not even happen more than once?)

Closes #1035.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config-changes if your PR contains any changes related to config file priority: normal

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

cake day for TJ server

6 participants