Open Source
Valkyrja is Open Source Software under highly permissive MIT license, contribution is most welcome.
We also offer a Modmail bot available for self-hosting, and hosted in our infrastructure for our
GitHub or
Patreon Subscribers and Partners.
github.com/ValkyrjaProject
Contribution
Any contribution is most welcome. This could be from code, through artwork, proofreading, to testing and reporting bugs. Or even suggesting new features or improvements!
Disclaimer
We recommend that the server owners link to, or copy and modify, this disclaimer about how they use the user data for moderation: http://radka.dev/disclaimer
Key Features
These are some features that are not fully covered by simple commands:
- Encrypted Database containing notes about users, all known usernames and nicknames, with good search based on keyword, userid or mention.
- Powerful permission system using which you can tweak every command to your liking. Change who can execut commands, in which channels, create aliases, or even set commands to self-destruct in the chat.
- Customizable Localisation - you can change messages that Valkyrja sends in response to commands or events. You can even use random responses.
- Custom commands that can send messages or very complex embeds in the chat, or via PM to the user, or people mentioned. With optional permission to ping roles as well. The above mentioned permission system and all the tweaks apply to these as well. Using this combination you can create a custom command with which only select people can mention certain roles!
- Force people to read the rules with the hidden code verification system, where the bot will send a user the rules, with hidden code, which they have to find and send back to get a member role assigned. If that's not your cup of beverage, you're welcome to many other forms of verification.
- Collect statistics about how many people joined, got kicked out by antispam, or passed verification.
- All the typical administration and moderation tools are available and highly customizable.
- Did you like temporary channels on TeamSpeak? No problem, we've got you. (
!tmp)
- Last but not least, we put a lot of emphasis on security. No server has access to any data from any other server, and no sensitive data is available to public. All the data stored on our servers is encrypted while only one person in the world has access to this server. Authors are also part of this trust - both the bot developer and the web developer are Red Hat engineers with decent amount of experience working in their respective fields.
Command permissions
This documentation contains a list of commands, permissions who can use those, and short description. Permissions are configured via the configuration, and the hierarchy is as follows: ServerOwner > Admin > Moderator > SubModerator > Member > Everyone where for example Admin can use everything that is marked as Admin, Moderator, or Everyone, but can not use commands marked as ServerOwner.
ServerOwner stands for either server owner, or someone with the ManageServer and Administrator permissions, and Admin, Moderator, SubModerator and Member roles have to be configured.
These permissions can be overriden for each command separately using the !permissions command and commands can also be blocked from specific channels, or allowed to be used in specific channels.
Commands ~ Basic
help
| Description |
Display a list of commands. |
| Parameters |
Use without parameters to get the list, or use it with regex parameter to search for specific commands. |
| Permissions |
Everyone |
man
| Description |
Print a detailed manual page (embed) for a specific command. |
| Parameters |
CommandId - Name of the command. |
| Permissions |
Everyone |
patchnotes
| Description |
Display some info about latest updates to the project. |
| Parameters |
None |
| Permissions |
Everyone |
Commands ~ Admin
cheatsheet
| Description |
Send an embed cheatsheet with various moderation commands and pin it. |
| Parameters |
None |
| Permissions |
Admin |
embed
| Description |
Build an embed. |
| Parameters |
Use without arguments for help. |
| Permissions |
Admin |
addEmoji
| Description |
Add an emoji reaction to a message. |
| Parameters |
<messageId> <emojis> - ID of the message (in the current channel); and Emojis that will be added as a reaction. |
| Permissions |
Admin |
stats
| Description |
Display join/verification stats. |
| Parameters |
>from< [to] dates (mandatory from/since optional to) |
| Permissions |
Admin |
createRole
| Description |
Create a new role with no permissions and return its id. |
| Parameters |
name of the role. |
| Permissions |
Admin |
createRoles
| Description |
Create roles with specified names. |
| Parameters |
List of whitespace delimited names, use quotes to use spaces. |
| Permissions |
Admin |
createPublicRoles
| Description |
Create public roles with specified names. |
| Parameters |
The first argument will be used as a name for the new role group, followed by a list of whitespace delimited names, use quotes to use spaces. |
| Permissions |
Admin |
createColourRoles
| Description |
Create 9 roles with various colours, you can find emoji representations of these colours in Valhalla - the Valkyrja support server. Use case - reaction assigned colour roles |
| Parameters |
None |
| Permissions |
Admin |
createTempRole
| Description |
Create a role with specified name, which will be destroyed after specified time. |
| Parameters |
name time name of the role and the when to delete it, in number of days or hours from now (e.g. 7d or 12h or 1d12h) |
| Permissions |
Admin |
createTempPublicRole
| Description |
Create a public role with specified name, which will be destroyed after specified time. |
| Parameters |
name time name of the role and the when to delete it, in number of days or hours from now (e.g. 7d or 12h or 1d12h) |
| Permissions |
Admin |
getRole
| Description |
Get a name, id and colour of a role. |
| Parameters |
name or id of a role. |
| Permissions |
Admin |
countWithoutRoles
| Description |
Count how many users do not have any role. |
| Parameters |
None |
| Permissions |
Admin |
kickWithoutRoles
| Description |
Kick all the users who do not have any role. Know what you're doing! |
| Parameters |
None |
| Permissions |
ServerOwner |
prune
| Description |
Kicks out all the inactive members. |
| Parameters |
Use the manual page command to see the details. |
| Permissions |
ServerOwner |
promoteEveryone
| Description |
Assign a role to everyone in your server. Please ensure correct permisison hierarchy before using this command. |
| Parameters |
ID of a role. This does not accept name of the role. |
| Permissions |
Admin |
demoteEveryone
| Description |
Remove a role from everyone in your server. Please ensure correct permission hierarchy before using this command. |
| Parameters |
ID of a role. This does not accept name of the role. |
| Permissions |
Admin |
alias
| Description |
Manage command aliases. |
| Parameters |
Use the command without parameters for more details |
| Permissions |
Admin |
listPermissions
| Description |
|
| Parameters |
None |
| Permissions |
ServerOwner only! |
permissions
| Description |
Configure permission groups for every built-in command. Use without parameters for help. |
| Parameters |
Use the command without parameters for more details |
| Permissions |
ServerOwner only! |
cmdChannelBlacklist
| Description |
Block a command from certain channels. (This is mutually exclusive with the whitelist) |
| Parameters |
CommandID, add or remove, and ChannelID (that long number) |
| Permissions |
Admin |
cmdChannelWhitelist
| Description |
Allow a command only in certain channels. (This is mutually exclusive with the blacklist) |
| Parameters |
CommandID, add or remove, and ChannelID (that long number) |
| Permissions |
Admin |
cmdResetRestrictions
| Description |
Reset restrictions placed on a command by the above cmdChannel* commands. |
| Parameters |
CommandID |
| Permissions |
Admin |
deleteRequest
| Description |
Set a command to have the issuing request message deleted automatically. |
| Parameters |
CommandID and true or false, whether set it to delete or not. |
| Permissions |
Admin |
deleteReply
| Description |
Set a command to have the response message automatically deleted in a few seconds. NOTE that only a few commands actually support this feature! |
| Parameters |
CommandID and true or false, whether set it to delete or not. |
| Permissions |
Admin |
operations
| Description |
Display info about all queued or running operations on your server. These are for example nuke or archive. |
| Parameters |
None |
| Permissions |
Admin |
cancel
| Description |
Cancel queued or running operation - use in the same channel. |
| Parameters |
Name of the command to cancel (nuke, archive, etc...) |
| Permissions |
Admin |
nuke
| Description |
Nukes the whole channel (delets all the messages) You can also mention a user to delete all of their messages. (Only within the last two weeks.) |
| Parameters |
Optional @user mentions or ID's to delete only messages from specific users. |
| Permissions |
Admin |
membersOf
| Description |
Display a list of members of a role. |
| Parameters |
name or id of a role. |
| Permissions |
Admin |
mentionRole / announce
| Description |
Mention a role with a message. |
| Parameters |
name of a role, followed by your message. |
| Permissions |
Admin |
unverify
| Description |
Remove verified status from someone. |
| Parameters |
User mentions or IDs |
| Permissions |
Admin |
removeStreamPermission / announce
| Description |
Removes the Go Live permission from all the roles. This is a command to mittigate release of a new enabled-by-default Discord feature. |
| Parameters |
None. |
| Permissions |
Admin |
Commands ~ Moderator
op
| Description |
_op_ yourself to be able to use mute, kick or ban commands. (Only if configured!) |
| Parameters |
None |
| Permissions |
Moderator (&SubModerator - will apply to mute only) |
kick
| Description |
Kick a user out of your server. This requires worded description why did you kick them out - they will receive this message via PM (and it will be added to the system as a warning) Example PM: Hello! I regret to inform you, that you have been **kicked out of the Elite Dangerous server** for the following reason: ......... _(You can rejoin the server in a few minutes.)_ |
| Parameters |
@user reason where @user = user mention or id; reason = worded description why did you kick them out. |
| Permissions |
Moderator |
ban
| Description |
This command can ban a User permanently, or for specific amount of time, and it can do the same with people, who are not on the server yet. (It will ban them as soon as they join.) This requires worded description why did you ban them - they will receive this via PM (and it will be added to the system as a warning) Example PM: Hello! I regret to inform you, that you have been **banned {for x hour(s) /or/ permanently} on the Elite Dangerous server** for the following reason: ......... |
| Parameters |
@user time reason where @user = user mention or id; time = duration of the ban (e.g. 7d or 12h or 0 for permanent.); reason = worded description why did you ban them. |
| Permissions |
Moderator |
silentban
| Description |
The same as ban, but it will not send the reason PM. (Hence silent..) |
| Parameters |
@user time reason where @user = user mention or id; time = duration of the ban (e.g. 7d or 12h or 0 for permanent.) reason = worded description why did you ban them. |
| Permissions |
Moderator |
purgeban
| Description |
The same as ban, but it will also delete their messages in last 24 hours. |
| Parameters |
@user time reason where @user = user mention or id; time = duration of the ban (e.g. 7d or 12h or 0 for permanent.) reason = worded description why did you ban them. |
| Permissions |
Moderator |
quickban
| Description |
Quickly ban someone using pre-configured reason and duration, it also removes their messages. (This command has to be first configured.) |
| Parameters |
@user user mention or id; You can mention several people at once. |
| Permissions |
Moderator |
unban
| Description |
Correctly unban a user. |
| Parameters |
@user user mention or id |
| Permissions |
Moderator |
muteChannel
| Description |
Temporarily mute the current channel. (This may block the moderators as well if they don't have explicitly higher SendMessages permissions than @everyone) |
| Parameters |
time - duration of the mute (e.g. `7d` or `12h` or `1h30m` - without spaces.) |
| Permissions |
Moderator |
unmuteChannel
| Description |
Unmute previously muted channel. |
| Parameters |
None |
| Permissions |
Moderator |
Commands ~ SubModerator
addQuote
| Description |
Add a new quote! Use with a username or mention as the first parameter, and the text as second. (Or you can just use a message ID.) |
| Parameters |
messageID or username text |
| Permissions |
SubModerator |
removeQuote
| Description |
Remove the last created quote, or specify ID to be removed. |
| Parameters |
None or ID of a quote |
| Permissions |
SubModerator |
slow
| Description |
Enable or disable slowmode in the current channel. |
| Parameters |
A number specifying message interval in seconds (or use time quantifiers s, m, h or d - e.g. 1m30s) |
| Permissions |
SubModerator |
clear
| Description |
Deletes specified amount of messages (within two weeks.) If you mention someone as well, it will remove only their messages. |
| Parameters |
<n> [@users] - optional @user mentions or ID's (this parameter(s) has to be last, if specified.) And mandatory n parameter, the count of how many messages to remove. |
| Permissions |
SubModerator |
clearRegex
| Description |
Delete only messages that match a regular expression within the last n messages. |
| Parameters |
<n> <regex> [@users] where you should not use any whitespace in the regular expression, use \s instead. (Note - ignores case.) |
| Permissions |
SubModerator |
| Example |
!clear 10 meme @user - removes messages that match regular expression "meme" that were sent by the @user within the last 10 messagews. |
mute
| Description |
Temporarily mute mentioned members from the text chat. This command has to be configured in the configuration.
|
| Parameters |
@user time - where @user = user mention(s) or ID(s); time = = duration of the mute (e.g. `7d` or `12h` or `1h30m` - without spaces.) |
| Permissions |
SubModerator |
unmute
| Description |
Unmute previously muted members. |
| Parameters |
@user - user mention(s) or ID(s) |
| Permissions |
SubModerator |
tempChannel
| Description |
Creates a temporary voice channel. This channel will be destroyed when it becomes empty, with grace period of three minutes since it's creation. (You can make it public using !permissions or use a !tc alias) |
| Parameters |
limit name (or just name for unlimited) - Limit how many people can enter, and name of the channel. |
| Permissions |
SubModerator |
permit
| Description |
Permit mentioned members to post links and spam, a single message within three minutes will not be removed. (This depends on antispam configuration) |
| Parameters |
@user mention of a member (or multiple mentions) to permit. |
| Permissions |
SubModerator |
warnings
| Description |
Display your own warnings. (Allow everyone to use this command with the permissions command.) |
| Parameters |
None. |
| Permissions |
SubModerator |
listWarnedUsers
| Description |
Display a list of users with more than specific amount of warnings. |
| Parameters |
n - Threshold above which a user will be added to the output. |
| Permissions |
SubModerator |
listIDs
| Description |
Search and display all User IDs on this server that match a username expression. |
| Parameters |
An expression to use for username search. |
| Permissions |
SubModerator |
whois
| Description |
Search for a User on your server (they must be on your server) |
| Parameters |
@user mention, name or ID. |
| Permissions |
SubModerator |
find
| Description |
Find a User in the database. This will search in all known usernames and nicknames (People can change their name, this will search their previous names as well.) |
| Parameters |
Use with any keywords you like. |
| Permissions |
SubModerator |
issueWarning
| Description |
Send a PM to a @user, with a warning message, and note this in the database. |
| Parameters |
@user warning message; where @user is a user mention or id and you can add the same warning to multiple people, just mention them all. |
| Permissions |
SubModerator |
addWarning
| Description |
Take a note about @user, what have they done this time... (This does not PM the user anything.) |
| Parameters |
@user warning message; where @user is a user mention or id and you can add the same warning to multiple people, just mention them all. |
| Permissions |
SubModerator |
removeWarning
| Description |
Remove the last created warning. |
| Parameters |
@user mention or ID (or multiple mentions) |
| Permissions |
SubModerator |
removeAllWarnings
| Description |
Remove all the warnings. |
| Parameters |
@user mention or ID (or multiple mentions) |
| Permissions |
SubModerator |
lockExp
| Description |
Locks, or unlocks, someones experience and therefore also activity role assignment. |
| Parameters |
@user mention or ID (or multiple mentions) |
| Permissions |
SubModerator |
memberRoles
| Description |
See what Member Roles can you assign. Set this up in the configuration. |
| Parameters |
None. |
| Permissions |
SubModerator |
promote
| Description |
Assign a Member role to the user. |
| Parameters |
@user role where @user = user mention(s) or id (will accept multiple mentions at once); and role = the name of a role to assign. |
| Permissions |
SubModerator |
demote
| Description |
Remove a Member role from the user. |
| Parameters |
@user role where @user = user mention(s) or id (will accept multiple mentions at once); and role = the name of a role to remove. |
| Permissions |
SubModerator |
Commands ~ Everyone
verify
| Description |
This command will either send verification info to the user, or verify them manually if used by an Admin. |
| Parameters |
See the config page for more info. |
| Permissions |
Everyone or Admin |
publicRoles
| Description |
Display a list of PublicRoles - Roles that anyone can !join or !leave. You can also configure groups of mutually exclusive roles (user can have only one of them) Set this up in the configuration. |
| Parameters |
None |
| Permissions |
Everyone |
roleCounts
| Description |
Display the number of people with every publicRole out of specified group. |
| Parameters |
Name of the role group. |
| Permissions |
Everyone |
join
| Description |
Join one of the PublicRoles. |
| Parameters |
name of a PublicRole that you wish to join. |
| Permissions |
Everyone |
leave
| Description |
Leave one of the PublicRoles. |
| Parameters |
name of a PublicRole that you wish to leave. |
| Permissions |
Everyone |
lvl
| Description |
Displays your current level and how many messages (or images) would it take to reach the next. |
| Parameters |
None |
| Permissions |
Everyone |
cookies
| Description |
How many cookies do you have? |
| Parameters |
None |
| Permissions |
Everyone |
nom
| Description |
Consumes one of your cookies (effectively decreasing your cookie amount by one) |
| Parameters |
None |
| Permissions |
Everyone |
give
| Description |
Give a cookie to your friend (this will effectively decrease the amount of cookies you have by one, and increase theirs.) |
| Parameters |
@user mention |
| Permissions |
Everyone |
quote
| Description |
Get a random quote, or a quote with specific id, oooor search for a quote by a specific user! |
| Parameters |
None, or a username or mention, or an id of a specific quote. |
| Permissions |
Everyone |
findQuote
| Description |
Search for a quote with a message content expression. |
| Parameters |
Expression to search for |
| Permissions |
Everyone |
memo
| Description |
Display your saved memo, or the memo of the mentioned user. (Use-cases: user profiles, hardware, etc... Create an !alias for your use case!) |
| Parameters |
None, or a username |
| Permissions |
Everyone |
setMemo
| Description |
Overwrites previously saved message. This is per-user feature and unique between servers. |
| Parameters |
None to wipe, otherwise the message to store. |
| Permissions |
Everyone |
profile
| Description |
Display your profile. If used with a username or @mention, it will display someone else' profile. |
| Parameters |
None, or a username |
| Permissions |
Everyone |
sendProfile
| Description |
Send your profile to pre-configured #introductions channel. |
| Parameters |
None |
| Permissions |
Everyone |
setProfile
| Description |
Set your profile. (Can be configured.) |
| Parameters |
Configured, see !setProfile --help |
| Permissions |
Everyone |
getProfile
| Description |
Get the source used to set your profile. |
| Parameters |
None |
| Permissions |
Everyone |