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
TODO
[x] Write JavaDocs for all new code.
[x] 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.
[x] 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?)
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 thejoined_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
cakeDayConfig.rolePattern
role to give to members.
"Cake Day"
Diagram
TODO
0
, assign them the role and whatever cosmetic stuff necessary.Closes #1035.