4.5 2022-11-11 Better /top and /rank
4.3 2022-04-02 Backend Upgrades and Slash Commands
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.
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
4.2 2020-12-15 Reaction voting, invite Xp, hide stats types and list of set messages.
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.
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.
4.1 2020-09-06 Bug fixes, small feature requests and monetization.
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.
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.
4.0 2020-07-31 Sharded Database and rearranging of commands.
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.
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.
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.
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.
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.
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.
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
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.
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.
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?
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
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!
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
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.
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).