Patchnotes
Features
Blacklists The developers can now blacklist servers or users from the bot entirely.
Bug Fixes
/rank member Using the ID of a member that has left the server will no longer redirect to your own stats.
Logging Added systems to try to track down the reset bug.
Bot crashes Added a potential fix to permanent shard outages.
Typos Fixed a few typos.
Features
/top improvements /top now uses buttons and slash commands for a more interactive experience.
/rank improvements /rank now supports buttons, and /top channels member has been moved to a submenu of /rank.
/bonus role beta /bonus role now has a beta flag. When enabled, levelup messages will not be sent, but the command will be significantly faster and more stable.
Bug Fixes
Voice channels and noXp Voice channels will now obey noXp settings.
Removed /role give|take /role give and /role take are outdated commands; /bonus role should be used instead.
Features
Discord.js v14 Discord.js is now updated to version 14.x
Thread improvements Handling of threads and forums are now more stable
Description changes Small changes to instructions and feature names
NoXP Categories Categories can be set to NoXp and this will apply to all of their child channels
Removed prefix commands All uses and mentions of prefixed commands have been removed.
Removed transition utilities /clearprefix and warnings to use slash commands have been removed. /migrate will remain for a few more versions.
Bug Fixes
Custom Roleassignment messages can be removed Previously, there was no way to remove custom Roleassignment messages
Token End Date /serverinfo now shows the correct (predicted) end date for tokens
Serverinfo Server Thumbnail /serverinfo now shows the server's icon as the embed thumbnail
Scheduled Resets Scheduled resets are now working.
Features
Node.js 16 / Discord.js v13 Upgraded our versions of Node.js and Discord.js to allow for more new features.
Thread Support Public threads now give XP to their parent channels. Private threads will still not give xp.
Permission Warnings From time to time, if you are lacking permissions a warning embed will display to remind you to update your bot's permissions.
Slash Commands Discord's Slash Command feature has been implemented.
Command Rewrite (yes, again) Yet again, we changed the structure of commands to make them fit with slash commands.
Bug Fixes
Current Channel Fixed issues with notifying about new levelups in the current channel
iOS Profile Bug The medal emoji will now be shown on iOS as well
Solo XP Fixes Previously, if a member was in a channel with a bot, the bot would count as a member allowing bypass of the soloXp setting. This has been patched.
DM Message Disabling Fixed the footer message of DMs to deactivate those messages
Animated Welcome Message Fixed profile gifs not playing in a welcome message
Features
Reaction Voting Use the voteEmote on any text post to trigger an upvote. This shares a cooldown with the command, but can be disabled globally by the admin. A member can also disable it personally.
Invite Xp Use the member set inviter command to set your inviter. This will grant your inviter one invite and you some bonus XP. This setting is final and can only be set once.
Reset stat types Reset commands for only resetting a certain type of stat f.e. textmessages.
Hide and deactivate stat types Choose what types of stats should be shown and recorded by the bot in all stat commands.
Smaller member stats card Reduced information on the member stats card. The stats command can now be used with a time keyword to query the specified time like with the top command. Also general information has been moved to the new member info command. The member's channel statistics has been moved to the new member top channel command.
Member channel toplist The former monthly stats on the member stats embed can now be queried separately and for all times.
New voice XP algorithm The counting of voice XP should be way more accurate now in total, but still only tick up once every few minutes.
Bug Fixes
Fix idle connection restarts After a certain database connection was not used for a period of time, because all relevant data was already cached in memory, it would cause an error and then restart the bot. This was fixed by adding connection pooling.
Features
Alias ar!top Reintroduced ar!top command as an short form alias for ar!server top members.
Display nicknames Option to display nicknames instead of usernames on all embeds and messages.
Allow deafened XP You can now choose to give no XP to deafened users.
Allow invisible XP You can now choose to give no XP to invisible (shown as offline) users.
No command channels and commandOnly channel Restrict certain channels from responding to commands or set one channel as the only channel where commands are allowed. Does not affect users with the manage server permission.
Removed default levelup message No default levelup message. If no levelupmessage is set by the admin, no one will appear, but roleassignmessages get sent without levelupmessage. Add option to not send levelupmessage when a roleassignmessage is sent. Removed option to only send levelupmessages on roleassignment (gets unnecessary).
Roleassignmessage without levelupmessage. Because of the changes to how the levelup messages work, you can now let the bot send role messages without levelup messages.
Removed { on | off} from all commands All true/false settings commands are now toggles. Allow deactivating specific settings of channels and roles (like autoposts) by entering the same command again (as alternative to using id 0).
Removed necessity of "id:" in commands Remove necessity of prefixing "id:" for identifying members/channels/roles using their id.
We got verified After a lot of support requests we finally got verified with Discord! Yay!
Monetization Tokens can now be bought and spent to activate premium on your server. This will not give new features, but quality of life enhancements (like lower stats cooldowns).
Most commands now count as messages Certain prefixes (like /,!,>) were excluded from text XP. This restriction is removed now.
ToS Added ToS and privacy policy.
Bug Fixes
Unintended upvote of bots You can no longer upvote bots.
Sorting of votetag with capital letters Sorting did not work until now, if the votetag contained at least one capital letter.
Fixed voice bonus XP voice was not giving the correct amount of bonus XP during bonus times.
Fixed channel reset Channel resets resulted in wrong roleassignments and levelupmessages (because the internal cache was not flushed together with the persistent data)
Fixed 2x votepower message 2x votepower message was still showing after votepower expired.
Fixed remove roleassignments Fixed not being able to remove roleassignments if there are already 3 for a certain level.
Fixed wrong channelname self targeting Fixed channel command using current channel if the typed channelname is not found.
Features
Sharded Database 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.
Command shortcuts 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.
Removed downvotes 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.
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.
Default rolemessages 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.
Footer updates 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.
Bug Fixes
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.
Features
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.
Bug Fixes
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.
Features
No xp roles Added the possibility to set noxp roles with the setrole command.
Botstats 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.
Bug Fixes
Backup Snapshots 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.
Increased limits 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.
Features
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.
Features
Website Removed the very raw looking React template website and integrated a new website (not using React) with Gentelella Bootstrap Theme.
Bot Statistics 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.
Features
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.
Bug Fixes
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.
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.
Textmessage cooldown 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?
Bug Fixes
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.
Features
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.
Backend changes 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!
Bug Fixes
Not showing of ar!info roles There was a problem in displaying ar!info roles, while there was a deleted role in the list.
Features
In-memory database 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!
Remote database 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.
Bug Fixes
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).