Reactions Parsing
This module enables users to gather stats about the reactions sent into a channel.
Note
Manage Messages is both Discord's command-permissions picker default for /reactions and separately re-checked in-code for every subcommand below, including print (see Layer 3).
/reactions print
Command Syntax
/reactions print message_id:{message id} [sort:{username/discriminator/nickname}] [show:{username/nickname}] [emoji:{default or custom emoji}] Command Description
Prints the list of users that reacted to the specified message in a readable way.
Setting the sort option will sort the output using the specified setting. Defaults to showing the reactions with the order Discord outputs them.
Setting the show option will show the output using the specified setting. Defaults to showing the users by their username.
Setting the emoji option will filter the output to the specified emoji.
Note
You can also right-click (or long-press) a message and choose Apps -> List reactions to run this against that message directly, without typing a message ID. That shortcut always shows usernames and does not support sort/emoji filtering - use /reactions print for that.
Permissions Needed
- User: Manage Messages
Examples
/reactions print message_id:123456789098765432 /reactions print message_id:123456789098765432 sort:nickname show:nickname /reactions print message_id:123456789098765432 emoji::pikathink:
/reactions summary
Command Syntax
/reactions summary [count:{# of messages}] [csv:{true/false}] [silent:{true/false}] [channel:{channel}] Command Description
Prints a list of messages with reactions within the last count messages in the given channel (defaults to the current channel), showing the list of reactions and number of uses per each reaction.
Setting csv to true instructs the bot to send a .csv file containing the details of the summary to the command author.
Setting silent to true suppresses the in-channel embed output (this only works if used with csv:true).
If count is omitted, the bot will scan the latest 10 messages.
The maximum number of messages the bot will scan is 500.
Larger scans can take a while, as the bot paces its API calls to avoid rate limits.
Permissions Needed
- User: Manage Messages
Examples
/reactions summary /reactions summary count:20 csv:true silent:true /reactions summary csv:true
/reactions unique
Command Syntax
/reactions unique [count:{# of messages}] [csv:{true/false}] [silent:{true/false}] Command Description
Prints a list of unique users that reacted to at least one message within the last count messages in the current channel.
Setting csv to true instructs the bot to send a .csv file containing the details of the output to the command author. The .csv file also shows the nickname of the user(s) and the number of times each user reacted to each reaction.
Setting silent to true suppresses the in-channel embed output (this only works if used with csv:true).
If count is omitted, the bot will scan the latest 10 messages.
The maximum number of messages the bot will scan is 500.
Larger scans can take a while, as the bot paces its API calls to avoid rate limits.
Permissions Needed
- User: Manage Messages
Examples
/reactions unique /reactions unique count:20 csv:true silent:true /reactions unique csv:true
Note
The age/joined options below take the standard time code (e.g. 1d3h2m) - or a Discord timestamp mention referring to a future time - described in Time Format Code.
/reactions contest
Command Syntax
/reactions contest [count:{# of messages}] [age:{time code}] [joined:{time code}] [members:{number}] [csv:{true/false}] [silent:{true/false}] Command Description
This function is specifically built with reaction contests in mind. Its output is focused on highlighting reactions that are added by Discord accounts that have been recently created, in order to perform a better analysis of potential "fraudulent votes": duplicate reactions added by newly created accounts just for the sake of increasing one's message's reactions.
The age and joined options will define how to recognize a suspect user:
agedefines the minimum age of the Discord account to avoid being flagged.joineddefines the minimum amount of time the user needs to be on the server to avoid being flagged.
The members option, on the other hand, defines the minimum number of members needed to pass both checks for a message to be flagged as having fraudulent reaction votes.
As a practical example:
/reactions contest count:50 age:1w joined:3d members:5
would flag any messages, within the last 50 messages in the current channel, with more than 5 (unique) members that have reacted to the message with a Discord account that is less than 1 week old and that joined the server less than 3 days ago.
If count is omitted, the bot will scan the latest 10 messages.
Omitting age and/or joined will disable the corresponding check from being relevant in recognizing fraudulent votes (e.g. omitting age will mark any account as suspect, regardless of its actual Discord age).
Omitting members will set its default value of 0, making every message with at least 1 suspect member being flagged as fraudulent.
Setting csv to true instructs GiselleBot to send 2 .csv files to the command author:
- A .csv with the same output of
/reactions summary, showing the list of messages with reactions within the lastcountmessages in the current channel, including the list of reactions and number of uses per each reaction. This is further enhanced with a "Fraudulent Flag" and a "Fraudulent Votes" extra column. - A 2nd .csv with the list of users that meet that "Fraudulent Votes" criteria, with a separate record for each message they reacted to (including how they reacted to the message).
Setting silent to true suppresses the in-channel embed output (this only works if used with csv:true).
The maximum number of messages the bot will scan is 500.
Larger scans can take a while, as the bot paces its API calls to avoid rate limits.
Permissions Needed
- User: Manage Messages
Examples
/reactions contest age:5d joined:1d /reactions contest /reactions contest count:50 age:2w joined:1w members:10 csv:true silent:true
See also
Full migration mapping for these commands: Migration Guide.