Skip to main content

Activity Streaks

Reward users for being active every day, week, or month with an activity score that resets if they become inactive again.

Activity Streaks
Reward users for being active every day, week, or month with an activity score that resets if they become inactive again.
This module is currently only available to users with Early-Access.
This module is storing data in your bot's database.
This module has one configuration file.
This module is being actively used on over 100 other servers on SCNX.
This module is included for free in every plan. Learn more about prices.

Features

  • Track user activity streaks based on a configurable period (daily, weekly, or monthly).
  • Streaks reset to zero if a user becomes inactive for a full period.
  • Automatically assign roles as rewards when users reach specific streak milestones.
  • Optionally display the current streak count in a user's nickname.
  • Staff-managed mode allows moderators to manually add and reset streaks instead of automatic tracking.
  • Users can restore a lost streak once per loss (if enabled).
  • Longest streak is tracked separately and never resets.

Setup

  1. Enable the module on your server.
  2. Open the configuration and select your desired streak period (daily, weekly, or monthly).
  3. If you want to use streak role rewards, create the roles on your server and configure them in the "Streak Roles" field.
  4. If you want the streak count to appear in nicknames, enable the "Show streak in nickname" option. Make sure the bot has the Manage Nicknames permission.
  5. If you want to use staff-managed mode instead of automatic tracking, enable it and configure the staff roles.

Usage

  • In automatic mode, the bot tracks user activity based on messages sent. When a user sends a message during a new period, their streak is incremented. If they miss an entire period, their streak resets to zero.
  • In staff-managed mode, staff members use /streak add to manually add streak points to users.
  • Users can view their current and longest streak using /streak view.
  • If streak restoration is enabled, users who lost their streak can use /streak restore to recover it once.
  • When a user reaches a streak count that matches a configured role reward, the role is automatically assigned.

Commands

Understand the documentation
In these docs, name:<Type> is an option of a slash-command with name name and the type Type. Options that not required, are described as [name:<Type>]. If the action of a command is vastly different between required and not-required options, we might list them separately.
Examples
  • /moderate ban user:<Member>: This command (/moderate ban) has an required option with the name "user" that only accepts one member as a value.
  • /moderate ban victim:<Member> reason:<Text>: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value and another required option with the name "reason" that accepts any text as an value.
  • /moderate ban victim:<Member> reason:<Text> [proof:<Attachment>]: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value, another required option with the name "reason" that accepts any text as an value and a not-required option with the name "proof" which allows one attachment as its value.
CommandDescription
/streak view [user:<User>]View your own or another user's current and longest streak.
/streak add user:<User>Manually add a streak point to a user. Only available in staff-managed mode. Requires a configured staff role.
/streak reset user:<User>Reset a user's streak to zero. Only available in staff-managed mode. Requires a configured staff role.
/streak restore [user:<User>]Restore a previously lost streak. Only available if streak restoration is enabled. Can only be used once per streak loss.

Configuration

In this configuration file, you can configure the module. Open it in your dashboard.

FieldDescription
Streak PeriodHow often users must be active to maintain their streak: daily, weekly, or monthly.
Staff ManagedIf enabled, streaks are managed manually by staff instead of being tracked automatically from messages.
Staff RolesRoles that are allowed to manage streaks using the add and reset commands. Only applies when staff-managed mode is enabled.
Show streak in nicknameIf enabled, the bot appends the user's current streak count to their nickname.
Streak RolesRole rewards for reaching specific streak milestones. The key is the streak count and the value is the role to assign.
Streak View MessageCustomize the embed displayed when viewing a streak.
Ignored ChannelsChannels where messages do not count toward streaks.
Ignored RolesRoles whose members' messages do not count toward streaks.
Enable RestoreIf enabled, users can restore a lost streak once per loss.
Restore RolesRoles that are allowed to use the restore command. If empty, all users can restore.

Troubleshooting

Streaks are not being tracked
  • Make sure staff-managed mode is disabled if you want automatic tracking.
  • Verify that the user is not posting in an ignored channel or does not have an ignored role.
  • Streak updates are checked once per period - a user only needs to send one message per period.
Nickname is not updating with streak count
  • Make sure "Show streak in nickname" is enabled in the configuration.
  • Ensure the bot has the Manage Nicknames permission.
  • The bot cannot change the nickname of the server owner due to Discord limitations.
Streak roles are not being assigned
  • Verify the streak role rewards are correctly configured with the right streak count and role.
  • Ensure the bot has the Manage Roles permission and its role is positioned above the reward roles.

Stored data

The following data is being stored about every user with an active or previous streak:

  • The Discord User ID
  • The current streak count and longest streak count
  • The last activity date, week, or month (depending on the configured period)
  • The previous streak count (for restoration purposes)
  • The timestamp of the last restoration
  • Metadata about the entry (date when created and last updated)

To remove all data stored by this module, purge the module database.