4.0 2020-07-31 Sharded Database and rearranging of commands.
To ensure scalability the database is now sharded on multiple machines.
Changed command structure
Some changes have been made to the commands. Most of the settings are now grouped in ar!set command, while the manual still splits the info into several categories.
Added more selection options for users and channels.
All comamnds now include the @user, username#tag or id:123456 notation for specifying a user / channel / role. Not specifying it will target the current channel / user.
New reset mechanism
Resets are done periodically for a fixed amount of rows in the database. This is to prevent resets to stall the bot for everyone else.
Added token currency
Token represents the support you have shown for the bot. It is also the new way of getting more votepower.
Prefix max length set to 1
After many requests about this the limit for the prefix length has been reduced to 1.
Added embeds for levelup and welcome messages
Levelup- and welcomemessages will now be shown in an embed.
To counter the command length of the new command structure, command shortcuts have been added. Simply use the first letter of each command.
(Dis)Allow solo xp
For now you can limit solo xp farmers a little bit with this new setting. XP will only be given if at least two unmuted members are in the channel. However, we are confident to also bring a allowSilentXp setting in the future to only give XP to people who are actually speaking.
We removed this feature because it was not widely used and opened up possibilities for harassement. It also makes sense to remove it in light of the upcoming reaction upvotes (using voteEmote as reaction will trigger an upvote), which would require a separate emote for downvoting.
Notify levelup current channel
You can now optionally let the bot send levelup messages to the channel the user last wrote in. If no such channel exists the message can still go to the autopost channel or dm.
3.8 2020-04-14 Changes, fixes and additions for existing features.
New settext command
This command is introduced simply to take weight off the setserver command.
Changed pointspervoice from five minutes to one minute
In order to be able to fix this patches voice bonus xp problems, the xpperfiveminutes is changed to xpperminute. To account for this change, the value has been divided by 5 rounded up for everyone (10/5 = 2, but 3/5 = 1). Because of the rounding everyone who had a low pointspervoice value, will see increased stats now.
Changed pointsper and levelfactor limits
Because of the pointspervoice also levelfactor (to 400), pointspertextmessage (to 20) and pointspervote (to 80) have been increased, so it is possible to have same levels and same proportion between type of stats again.
You can set your own default role assign- and deassignmessage. It will be overwritten for roles, where a specific message was defined (setrole assignmessage).
Deassign assigned roles option
Until now the bot was not taking away assigned roles above the own level. They will now get removed automatically on level change (most likely due to a leveling down) if you activate this option.
A new utility has been added for the owner of the bot to easily set the footer message for all shards via a bot command. This way any updates, maintenance, patchtimes and other information can be more easily announced via the footer of the rank and top commands, so users will know better whats going on.
Fixed voice bonusxp.
Bonusxp added through voice activity during bonux xp times did not add the 100% correct value.
Fixed Voteemote command
Votecommand was not working due to discord.js version update.
Fixed Lvl 1 roles for bots
ActivityRank was unintentionally assigning serverjoin roles to bots.
3.7 2020-03-26 Backend changes.
Update to Discord.js v12
We updated Discord.js to v12, because of some small bugs with the old version.
Update to Node.js to v12
We updated Node.js to v12, because of some small bugs with the old version.
Servercount updates on backupdb
As the bot will run distributed accross multiple machines, the server count stats for bot-index-websites have to be sent from the backup server, as only there lies all the information necessary.
Added a hotfix for a discord.js error
A known issue in the discord.js framework caused a random shard to not get ready sometimes. A workaraound now manually activates that shard after some time.
3.6 2020-03-12 No-XP roles, double XP weekends and command restructuring.
No xp roles
Added the possibility to set noxp roles with the setrole command.
Daily statistics about the bot/shard itself is now saved to the remote database to be able to better track its performance.
Bonusxp stat customizations
The bonus stat appearance will be customizable like the vote stat now - Name and emote can be customized.
Multi XP times.
You can activate multi xp for a limited amount of time using the two new setstat bonuspertextmessage and bonuxperfivevoiceminutes commands. These XP will be added within the bonus stat. Additionally to the normal XP, the set amount of bonus points will be added for each textmessage or five minutes in a voicechannel.
Command structure changes
The activityboard and noxp channel commands have been moved to the new setchannel main command and parsing structure has been adjusted for the setrole command.
To protect the bots data from many threats (like programmer mistakes), a backup schedule (offered by the hosting company) has been added to automatically create snapshots of the remote database server once a week.
The limit for the give and take commands has been increased from 1K to 10K. The limit for roleassignments has been increased from 50 to 100.
Give/Take points without mention
Like with the up and down commands, you can now give and take points without mentioning the user.
3.5 2020-02-20 Implementation of multiple user requested features II
Set command split
The set command was removed and insetad splitted into multiple commands, because it combined too many features. The setserver command will contain settings for the server in general, while the setsats command will customize the leveling system. The setrole command is responsible for setting up the roleassignments.
Custom roleassign messages
With the new setrole assignmessage command the message sent with the sendlevelupdates option is customizable.
Send levelupdeates only on new role
Enabling this option will let users direct/activityboard levelupmessages only trigger, whenever the user receives a new role.
Disable downvotes option
The downvote functionality can now be disabled to avoid harassment on your server.
Limits to roleassigments
Added very high limits for roleassigment to avoid hostile people trying to overload the bot. A max of 100 roleassigments in total and max 3 per level has been added.
Mention the bot for its prefix
When you mention the bot itself, it will respond in a friendly way now, showing you the prefix and help command.
Enable muted XP option
Allow users in voicechannels, who are muted, to still get XP as normal.
Customize toplist entries per page
Set the amount of users and channels shown in the top commands to get a longer or shorter list.
Vote without mention option
Allow users to vote for other user without having to ping them. Using the up and down commands, you can now simply write their discord username#tag instead of pinging them.
3.4 2020-02-10 Website Redesign & Bot Statistics
Removed the very raw looking React template website and integrated a new website (not using React) with Gentelella Bootstrap Theme.
On the website, you can now see some statistics about the bot. These include active voice- and textmembers or commands triggered during the past day. All values get updated every 24 hours.
3.3 2019-12-27 Backend changes
Removing Users table
Reducing the load on the backup server by removing the users table. This table had to be queried for every roleassignment (check sendlevelupdates) and vote (check last time upvoted another user). Now the upvotes are in a dedicated table, which is periodically updated from the backup server and the sendlevelupdates setting is saved with the guildmember table. As a result users have to set their sendlevelupdates setting for each guild/server separately.
Redo of texts management
All kinds of texts are now centralized and saved on the backup server. Each time a bot's shard or the website server starts, it will load all necessary information.
Reset command overload
Resetting stats caused an overload problem for very large servers. Resets will now be done instantly and independently on both, bot and backup database (and not updated differentally as usual), and a cooldown for the respective commands has been added.
Bot muted after misspelling of reset command
Using the reset command caused the bot to not respong anymore in your server, if the commands parameters were formatted the wrong way.
3.2 2019-09-26 Implementation of multiple user requested features
Reset deleted users and channels
Understandably those "user lefts" and "channel deleteds" are annoying in your stats. Wipe them all at once with the new reset commands.
Admins can activate and set the textmessagecooldown from 0 to 120 seconds. After a user sends a message, it will not be possible for this user to get more xp from messages for set amount of time.
Level 1 Roleassignment (on server join)
Roleassignments made for level 1 will now be given at the moment of joining the server.
New command: ar!activityboard - Send activity messages to server channels
You can now let the messages be posted in specified channels when certain events happen. For now we have levelup and welcome messages (+ set your own customized messages). Any ideas for new activityboards?
You cannot vote for yourself anymore
It was never intended that a user should be able to self-vote. Now it is fixed to ensure that our resetted vote stats don't get polluted.
3.1 2019-09-23 Bonus score
The fact that admins could grant xp only over upvotes was problematic in a few ways. Most notably that it is not transparent anymore how many "real" upvotes the user got. Because of this we introduce the bonus score. From now on ar!give and ar!take will only affect the new bonus score, while votes will only be grantable by users ar!up and ar!down. We will also reset the vote stat globally for everyone (sorry), so all votes will always be true user votes from now on.
We made also a few fundamental backend adjustments to our previous patch that should further increase the bots performance and scalability, but might cause serious problems after introducing the patch. The transition to the new distributed backend is almost finsihed but not yet. These things are not easy to test with a testbot (that has only 3 servers) and because of this i already say sorry for any downtimes during patching!
Not showing of ar!info roles
There was a problem in displaying ar!info roles, while there was a deleted role in the list.
3.0 2019-09-15 Remote and in-memory databases
An in-memory database is now making the queries for statistics faster (previously the calculation were made on a persistent database). Sadly we cannot test everything with our testbot, as we cannot simulate thousands of users doing different things every second. To test our new code, new remote- and new in-memory-database properly we have to use the live bot - this will cause some serious downtimes / malfunctioning around the update date, sorry!
To save everyones statistics and settings from our in-memory database we simply send it to our remote one periodically. Likewise, after startup with an empty in-memory database the bot will retrieve all the data it needs (for this particular shard and vps) on demand. This way the bot can easily work distributed on multiple machines in the future. But this comes at the cost that during the first minutes there will be a warmup phase so the bot has time to remotely load most of the records into memory before handling all the load. During that time it will simply ignore a certain percentage of messages.
Revamp of the role/noxp tables
To have a more solid programming we had to change the way roles and noxp channles are saved in our backend. Because of this everyone has to reinsert their configurations for those two features.
Moved reset functionality from set to a new command
The free up the set command we made a new command for resets. Also because we will soon add another reset command, the reset deleted users/channels functionality to clear up stats.
New command: ar!patchnotes
A few have expressed the wish to know whats going on with updates. Fair enough, here you have your command.
Not showing of ar!info when one of the roles/noxp lists is too long
We solved this by having separate commands for showing the lists (f.e. ar!info roles).