Skip to content

Commands

sf edited this page Apr 25, 2024 · 82 revisions

Overview

Chatot is built to assist in the moderation of servers and to integrate the resources available on Smogon into Discord. Some of these unique features include:

Moderation:

  • Logging mod actions (kick/ban/timeouts) and user actions (boosting, post deletions, etc)
  • Tickets
  • Reaction Roles
  • Inreased utility in banning/kicking/timing out users
  • Mod posts
  • Cross-server security

Resources:

  • Lookup Pokemon info and sprites
  • Quick access to Smogon's strategy dex
  • Access to any resources available for Smogon metagames

Smogon Integrations:

  • Forum monitoring and updates
  • Linking your Discord and forum profiles
  • Rate-My-Team notifications (main Smogon Discord only)

And more. The list of features is ever growing. All commands are described on this page, which is updated whenever new features are released.

Command usage

In the following list of commands, <> denote required fields while [] denote optional fields. At the least, the bot should be able to see previous messages and send them. The command definitions mention any additional permissions that may not be obvious; however, do not assume it is an exhaustive list.

Chatot relies on slash commands. If you aren't familiar with them, slash commands are integrated into your Discord clients and can be accessed at any time by using the '/' key. Once you select a command, Discord will prompt you for the required information and give you a list of optional fields. You can either click on them or hit tab/arrow keys to navigate through them (I haven't tried it on mobile, but I imagine it's pretty straightforward). Tab is your friend. It will take a little bit of time to get used to them if you aren't already, but I'm sure you'll find they offer many QoL improvements over the prefix system.

If you don't see a command listed when you type '/', you don't have permissions to use it. See the Command permissions section for instructions on changing permissions for each command.

If you mod a server, it is highly recommended you enable developer mode.

Command list

addemoji

/addemoji <url> <name>

Additional required permissions for Chatot: Create expressions

Description: Adds an image to the server as an emoji under the specified name

Scope: Global

Default permissions users must have: Manage stickers and emojis

url: Link to the emoji image

name: Name the emoji shows up as

Emoji names must be at least 2 characters long and only contain alphanumeric characters and underscores. When copying a link, make sure you click "Copy Link" and not "Copy Message Link". You'll know you clicked the right one if the URL ends in an image file extension (jpg, png, gif).


ban

/ban <user> [timeframe] [reason] [dm]

Additional required permissions for Chatot: Ban user

Description: Bans a user from the guild in which the command is used.

Scope: Global

Default permissions users must have: Ban members

user: Username (id) of the person to be banned. The user does not need to be in the server.

timeframe: Time over which the users messages are to be deleted (defaults to none deleted if not specified)

reason: Reason for the audit log (not sent to the user)

dm: Message to be sent to the user. Your message is prepended with the following:

You have been banned from [guild name] for the following reason:


bulkdelete

/bulkdelete <channel> <number>

channel: The channel to delete messages from

number: How many messages to delete

This command deletes the specified number of messages from the specified channel. Messages must be newer than 2 weeks. This is currently a dev-only command, useful in triggering the bulkMessageDelete event.


channels

/channels <id>

id: The channel id

Fetches a channel by its id. Currently a dev-only command.


checkgban

/checkgban <user>

Additional required permissions for Chatot: None

Description: Checks whether the provided user can be banned from every guild the bot is in.

Scope: Guild

Default permissions users must have: Admin

When selecting a user, the client will prompt with a selection of users within the current guild. If the user is not present, you'll need to provide their user id.


config

/config verify <role> <method> [accountage] [turnoff]
/config logging scope [ignore] [unignore] [deletions] [edits]
/config logging chantype <channel> <type>
/config dex [gen] [format]
/config cc add <channel> <tier> <gen> [role] [stage] [cooldown] [tierprefix]
/config cc remove <channel> <tier> <gen>
/config cc removeall
/config tickets <threadchan> [logchan] [staff] [staff2] [staff3]
/config fun roles
/config fun channels
/config fun cooldown <seconds>
/config fun exemptions
/config fun allowance <flag>
/config fun reset

Additional required permissions for Chatot: Create Private Threads (tickets only), Send Messages in Threads (tickets only)

Description: Configures server specifications for various commands

Scope: Global

Default permissions users must have: Ban Members

--

config verify

role: Role given to/removed from verified users

method: Whether the role is added or removed upon verification

accountage: Minimum age of a user's forum account, in days, to be granted access to the server (referring to join date)

turnoff: Boolean to turnoff verification for the server. Default is false. If set to true, verificiation will no longer be used.

/config verfiy is used to specify the requirements for a user to be considered "verified." If method is set to 'Removed', new users who do not meet the verification requirements are given the specified role on join; this role is removed once they are verified with the /verify command. Alternatively, if method is set to 'Added', new users are not granted a role unless they meet the verification requirements on join; otherwise, they are given the role once verified. Optionally, the minimum age, in days, of their forum account with respect to their forum registration date can be specified in the accountage field. By passing true to the optional parameter turnoff, verificiation will be turned off for the server and users will not be given a role.

--

config logging scope

ignore: Channel in which deletions/edits are not logged

unignore: Restores logging of the specified channel

deletions: Whether to log deletions by mods or everyone.

edits: Whether to log message edits in the server.

/config logging scope configures the logging preferences for the server. Message deletions and edits are not logged in channels passed into the ignore field; this functionality can be restored later on by passing the channel into unignore. This command can also be used to configure your preferences for whether all message deletions are logged or only those by mods, as well as any message edits. By default, self deletions and edits are ignored (mod deletions are tracked by default), even if the chantype would allow them to show up. These features are only logged when enabled via this command.

--

config logging chantype

channel: Channel currently set to receive bot logs

type: The types of logs to send to the channel

If desired, logging can be split across several text channels. This subcommand is used to determine what goes where. There are a number of setups provided for selection, which are generally designed to go in pairs. The options are the following:

Option Description What is Logged
All Logs everything (un)ban, kick, (un)timeout, mod delete, self delete, edit, (un)boost
Edits Only logs edits edit
Non-Edits Logs everything but edits (un)ban, kick, (un)timeout, mod delete, self delete, (un)boost
User Executed Logs actions executed by a regular user self delete, edit, (un)boost
Mod Executed Logs actions executed by a mod (un)ban, kick, (un)timeout, mod delete
User Targeted Logs actions that target a user (un)ban, kick, (un)timeout, (un)boost
Message Targeted Logs actions that target a message mod delete, self delete, edit

You are allowed to use any combination and any amount of each log channel type. To ensure you log everything, you should have both kinds of channel types within a pair (you do not need to have multiple pairs). Note that setting a channel type does not mean everything in that category is actually logged; logging preferences on deletions and edits can still be set with /config logging scope. In other words, setting the channel type chooses what can show up in the channel, not what will show up. The default configuration is 'All.'

--

config dex

Sets the default gen and/or format to use when printing an analysis with /dex. Formerly /dexdefault.

--

config cc add

channel: Channel to receive alerts for updated C&C status

tier: The tier associated with the channel that receives updates

gen: The gen associated with the channel that receives updates.

role: Optional role to ping on update

stage: The C&C stage(s) the provided role is used to ping for. Options are QC Ready/Progress, Done, and All (QC ready, QC progress, and done). Default is 'All' if none provided.

cooldown: Minimum time between alerts for QC progress.

tierprefix: Non-stage Smogon thread prefix used to distinguish between metas or gens.

This command is used to subscribe to C&C status updates of threads posted on the Smogon forums. Because the GP bot handles GP updates, only QC progress and full C&C completion are monitored at this time. Optionally providing a role to the respective field will ping that role in the specified channel whenever there is an update in the provided stage. No pings are made when a thread progresses to GP ready. The minimum time between QC progress pings can be set by passing an integer value to cooldown. The allowable values range from 0-12 hours; the default is 0, meaning there is no cooldown between alerts.

For C&C forums that use a thread prefix to distinguish between different tiers (i.e. AAA, Inheritance, BH, etc in OMs) or gens (i.e. Gen 1, Gen 2, etc in Old Gens), please provide the respective thread prefix to the tierprefix field. Standard C&C stage thread prefixes, like QC or GP, are taken into account and do not need to be specified.

For example, a typical command for tracking Gen 9 AAA threads might look like:

/config cc add channel: #cc-int-test tier: almost-any-ability gen: sv tierprefix: AAA

For tracking old gens OU, you might use something like:

/config cc add channel: #cc-int-test tier: ou gen: xy tierprefix: Gen 6

And for current gen OU, it something like:

/config cc add channel: #cc-int-test tier: ou gen: sv

--

config cc remove

channel: Channel receiving alerts for updated C&C status

tier: The tier associated with the channel that receives updates

gen: The gen associated with the channel that receives updates.

This command is used to stop tracking a specific meta in the specified channel.

--

config cc removeall

This command is used to turn off C&C tracking entirely in the server.

--

config tickets

threadchan: Parent channel for button and private threads

logchan: Channel for logging new thread creation alerts

staff: The staff role to be pinged/added to the private thread

staff2: Optional: Additional staff role to be pinged/added to the private thread

staff3: Optional: Additional staff role to be pinged/added to the private thread

This command creates a permanent button that users can click to create a private thread with server mods. An embed + button is posted in the provided channel. When users click the button, they are prompted to provide a short description (250 max characters) about their concern/question/feedback. There is a 10 minute timeout for them to submit their response. Once the form is submitted, a private thread is created off of the provided channel (the channel with the button), accessible only to the user who clicked the button, the bot, and the mods. While the user is unable to add people to the thread, mods can add users/roles to the thread by pinging them with the standard @username format within it. Please be mindful of who you ping when dealing with sensitive topics, as they will be automatically added to the private thread! Providing a channel to the logchan field will send an alert to the channel with the username of the submitter and link to the thread when a new thread is opened.

If you wish to turn off this feature, simply delete the bot's message containing the button. Only 1 active button is allowed per server; subsequent calls to this command will result in a new embed + button being posted to the provided channel and the original button being rendered innactive. Any innactive buttons can be safely deleted.

If you notice that the thread is made and the bot tags the role, but staff is not getting the notification, ensure that either the staff role is taggable by anyone or the bot is granted the permission to tag any role.

--

config fun roles

Sets up which roles are allowed to use Chatot's fun message reply functionality ("hi chatot" etc functions). Running this command will prompt you with a dropdown where you can select up to 10 roles that are allowed to use these features. Once you select at least 1 role, clicking out side of the menu will submit your choices. Running this command multiple times will overwrite your previous selections.

By default, Chatot will reply to all roles (i.e. everyone).

--

config fun channels

Sets up which channels are allowed to use Chatot's fun message reply functionality ("hi chatot" etc functions). Running this command will prompt you with a dropdown where you can select up to 20 channels or channel groups that are allowed to use these features. Selecting a channel group will apply the settings to all channels within it. A channel group is the "folder" in your Discord server that can be used to group your channels together (i.e. staff, social, TEXT CHANNELS). Once at least 1 channel is selected, clicking outside of the menu will submit your chocies. Running this command multiple times will overwrite your previous selections.

By default, Chatot will reply in all channels it has access.

--

config fun cooldown

seconds The cooldown in seconds (integer value) between triggers of the fun message reply features. Range: 0-600 (10 minutes).

This command sets the limit on how often the fun message reply features ("hi chatot" etc functions) can be triggered. The cooldown is applied on a per-channel basis.

By default, no cooldown is used.

--

config fun exemptions

As with /config fun roles, running this command will prompt you with a dropdown where you can select up to 10 roles. These roles are exempt to any restrictions placed using the other /config fun subcommands. Once at least 1 role is selected, clicking outside of the menu will submit your choices. Running this command multiple times will overwrite your previous selections.

By default, no roles are exempt.

--

config fun allowance

flag Whether to allow the usage of the fun message reply features ("hi chatot" etc functions)

This command toggles Chatot's replies to the fun message reply features. Setting the flag to False will disable the features on a server-wide level. This setting ignores all other settings and exemptions, so turning it off will turn it off completely in the server.

By default, the features are on.

--

config fun reset

This command resets the fun configuration to its default values for the server. See the other /config fun subcommand descriptions for these values.


convert

/convert <thisnumber> <to>

Additional required permissions for Chatot: None

Description: Unit converter

Scope: Global

Default permissions users must have: None (usable to everyone)

thisnumber: Value to convert

to: Unit to convert thisnumber to

Input units are assumed based on the option provided to to. The assumed mapping is as follows:

English Metric
F C
in cm
mi km

custom

/custom add
/custom remove <name>
/custom edit <name>
/custom list

Additional required permissions for Chatot: None

Description: Manages the database of custom prefix commands registered to the server

Scope: Global

Default permissions users must have: Manage Guild (Server) & Manage Roles

name: Unique identifier for the command (prefix + name is how you execute it), specified by the user on creation

Custom commands allow users to create prefix commands for their server. Creation requires specifying a prefix (most special characters), a name, and the text to print. Users are able to define custom snippets of text they can readily post with the bot. A modal (popup) is used when adding or editing a registered custom command, allowing users to format the text as they'd like (formatting options are the same as a normal Discord text box, except that you are free to enter line breaks). Using custom list will print the list of registered prefix+identifiers. Custom commands can be used anywhere and by anyone in the guild in which they are registered, so try not to create commands that will be abused.

For customs to work, Chatot must have read and post message permissions in the channel in which the custom command is used.


deletemydata

/deletemydata

Additional required permissions for Chatot: None

Desription: Deletes all instances of your personal information from Chatot's databases in accordance with the privacy policy

Scope: Global

Default permissions users must have: None (usable to everyone)

Before confirming, please note:

  • Any preferences and information you've previously provided will be lost.
  • Deletion of your data may break some of Chatot's functionality for you.
  • You will be rendered unverified in any servers that use Chatot for Smogon verification, meaning you may lose access to your messages and participation in the server until you reverify.
  • This will not lift any existing punishments on your account.
  • Preferences and information can be provided again by running the appropriate commands.

Users are prompted with a confirmation message before continuing.


dex

/dex <pokemon> [gen] [format]

Additional required permissions for Chatot: None

Desription: Prints a link to the SmogDex entry for the specified Pokemon.

Scope: Global

Default permissions users must have: None (usable to everyone)


directory

/directory

Additional required permissions for Chatot: None

Desription: Prints a link to the Smogon Discord server directory.

Scope: Global

Default permissions users must have: None (usable to everyone)


dt

/dt <name> [gen]

Additional required permissions for Chatot: None

Description: Lists detailed information about the provided Pokemon/nature/item/ability/etc

Scope: Global

Default permissions users must have: None (usable to everyone)

name: Name of the search parameter. Includes: Pokemon, natures, abilities, items, moves, formats, and types

gen: Generation to check. Default: latest

Uses the information contained in the SmogDex to give detailed information on the provided query. Additional information is used from the PS GitHub where needed. By default, the latest gen is used if none is provided.


fc

/fc add <game> <code>
/fc remove <game> [code]
/fc list <game> [user]

Additional required permissions for Chatot: None

Desription: Manages the friend code database.

Scope: Global

Default permissions users must have: None (usable to everyone)

game: The game the FC is for (i.e. HOME, Switch, 3ds)

code: The FC

user: Discord user to list the FC for. If not provided, the initiator of the command is used.

Adds/removes/lists the friend codes associated with a user. Removing a FC removes all of the stored entries for the specified game, or only the specific code if provided. FCs are listed with /fc list for the initiator of the command by default, or for specified user if provided.


find

/find user <name>
/find ban <search>
/find alts <discord>

Additional required permissions for Chatot: None

Desription: Finds a user or ban with the provided criteria

Scope: Global

Default permissions users must have: Ban Members

--

find user

name: The username, display name, or nickname of the user

The /find user subcommand attempts to find every unique user matching the provided name, searching across all of the servers the bot is in. The bot supports searching against their display name (the default name shown across Discord for their account), their nickname (the server-specific name a user can set), or username (the unique name associated with their account). Only at most 1 result is shown per user; the current guild is searched first. Output is formatted as display|nickname (username): <@id>.

--

find ban

search: The username, display name, id, or reason of the ban.

The /find ban subcommand extends the ban search functionality within Discord. The command allows you to find the bans associated with the provided string. Bans whose username, display name, id, or reason includes the value given in search will have the user ids returned so that the associated ban can be found within the Bans submenu of Server Settings.

--

find alts

discord: The profile or user ID of the user's Discord

This subcommand combines the /whois forum and /whois discord features to find verified Discord accounts that share a common Smogon forum account. Links to the user profiles are returned if any alts are found.


gban

/gban user <user> [reason]
/gban group
/gban enforce <server>
/gban unenforce <server>

Additional required permissions for Chatot: Ban user

Description: Bans specified user(s) from every server the bot is in

Scope: Guild

Default permissions users must have: Admin

user: Username (id) of the person to ban

reason: Optional reason for the audit log/modlog embed. Defaults to 'Banned from forums'

server: Name (case insensitive) or id of the server to no longer/restore gban enforcement

This command allows you to ban a single user (/gban user) or a group of users (/gban group) from every guild the bot is in. When banning a single user, you have the option of selecting their username (if they are in the guild in which the command is run) or entereing their user ID. If no reason is provided, the message defaults to 'Banned from forums.' Upon completion, IDs any other Discord accounts that share a common Smogon forum account with the banned user are returned as well. You may consider running this command again for these accounts; however, Discord bans are inheriently IP based.

When banning a group of people with /gban group, a popup is opened where you can enter in the IDs of the users and an optional reason for the audit log. The same default message is used if none is provided. When entereing IDs, please enter 1 per line. At this time, there is a soft limit of 20 IDs. Upon completion, IDs any other Discord accounts that share a common Smogon forum account with the banned user(s) are returned as well. You may consider running this command again for these accounts; however, Discord bans are inheriently IP based.

For this command to work, Chatot must have read message and post permissions in the channel in which the command is used. The user who initiated the command will be prompted with a y/n selection, which they respond with in a subsequent message. Their followup message must be one of the two choices, otherwise the command will exit. All messages from other users will be ignored before the user has confirmed their intent. The initiator has 1 minute to respond. Upon total success, the bot will post something along the lines of

I have banned the user from every server I am in.

in the channel in which the command was initiated. If the bot was unable to ban a user from one of its servers, it will instead respond with which servers it had trouble in and something along the lines of the following message

I attempted to ban the provided id(s) from every server I am in, but there were some issues in some.

Note that errors are only relayed for official servers, which ignore the opt-in state and always have gban support enabled. The table below summarizes the gban behavior for different combinations of official and opted-in servers.

Official Opted In Tries to Ban Alerts SS on Error
Y - Y Y
Y - Y Y
N Y Y N
N N N N

If modlogging is enabled, the bot will post an embed to the log channel in each server the user was banned. Note that if a user is already banned from the server, no log will be emitted. Similarly, an embed will be posted to the logging channel where the ban failed.

When a bot joins a new server, Senoir Staff is given a prompt to mark it as official. The default state is unofficial opted out.

Passing a server name/id to the enforce subcommand will mark it as official. Gban errors are reported only for official servers and these servers cannot opt out of gbans. Passing a server name or id to the unenforce subcommand will unmark it as being official; in this case, the server is automatically opted in so that there is no interruption in gban service. However, the server is now able to opt out if they desire.

This command is only usable in the main Discord server by Senior Staff.


gunban

/gunban <user> [reason]

Additional required permissions for Chatot: Ban user

Description: Unbans the specified user from every server the bot is in, keeping in place separate bans

Scope: Guild

Default permissions users must have: Admin

user: Username (id) of the person to ban

reason: Optional reason for the audit log/modlog embed. Defaults to 'Unbanned from forums'

This command essentially undoes a global ban done with the /gban subcommands. Bans in servers that were not done with /gban are left in place; in other words, if a user was banned in a server before they were gbanned, the ban is not lifted in that server. Note that unlike /gban, a confirmation message is not required. The timestamps and reasonings from the modlog are used in determining which bans were global. This feature only applies to servers that are currently opted into gbans or official.


keepalive

/keepalive on
/keepalive off

Additional required permissions for Chatot: Create Posts, (Optional) Manage Threads

Description: Prevents a thread from being archived

Scope: Global

Default permissions users must have: Manage Threads

Prevents the thread/forum post in which it is used from being archived. For this function to work, the bot must have access to the thread/post (i.e. the bot cannot prevent a private thread it does not have view access to from being archived). If the thread is locked (Note: archiving a thread is not the same as locking it; lock is a separate setting), the bot needs the Manage Threads permission in the server to prevent it from archiving.


kick

/kick <user> [reason] [dm]

Additional required permissions for Chatot: Kick user

Description: Kicks a user from the guild in which the command is used.

Scope: Global

Default permissions users must have: Kick members

user: Username (id) of the person to be kicked.

reason: Reason for the audit log (not sent to the user)

dm: Message to be sent to the user. Your message with prepended with

You have been kicked from [guild name] for the following reason:


learn

/learn <pokemon> <move> [gen]

Additional required permissions for Chatot: None

Description: Checks whether and how a Pokemon learns a move

Scope: Global

Default permissions users must have: None (usable to everyone)

pokemon: Name of the pokemon

move: Name of the move

gen: Generation to check. Default: latest

Checks whether a move is in a Pokemon's learnset and returns the methods by which it learns it in the provided gen. If no gen is provided, the latest generation is used. By default, NatDex is supported, meaning learnsets may be returned for Pokemon not currently available in the gen.


livetour

/livetour create <title> <duration> <units>
/livetour extend <post> <duration> <units>
/livetour close <post>

Additional required permissions for Chatot: Add Reaction

Description: Manages live tour signups

Scope: Guild

Default permissions users must have: Admin

title: Name for the live tour. Used as the embed title

duration: How long signups are open or extended

units: The time units of the duration

post: Message link to or id of the signup post

This command is used to manage signups for a live tour within the main Smogon Discord. Running the create subcommand will post an embed to the live tour announcement channel containing the provided title, relative timestamp signups will close, and the name of the host (assumed to be the person who ran the command). Users signup for the tour by reacting with a thumbs-up emoji, which the bot seeds on the embed when posted. At the end of the signup period, the bot collects the usernames of the people who reacted and pings the host with the list in the channel where the command was run. Subsequent reactions to this post after the signup period, reactions other than thumbs-up, and any reactions from the bot are ignored. Here is an example of the input/output:

Livetour create example

In the event signups need to be extended, users may run the extend subcommand. This command extends (or reopens) the signup window for the provided duration, relative to the original close date. Users may provide a link to the signup post (right click > Copy Message Link) or the message id of the signup post (requires dev mode to be enabled; right click > Copy Message ID).

Should signups want to be closed early, the close subcommand can be used. This command edits the close time in the embed so users are aware and collects the reactions on the post. As with create, the bot will post a message tagging the person who ran the command with a list of names in the channel where the command was run.

Signups are currently soft limited to 2 weeks.


logging

/logging enable <channel> [type]
/logging disable <channel>

Additional required permissions for Chatot: Send embeds

Description: Enables / disables logging into the specified channel.

Scope: Global

Default permissions users must have: Ban members

Possible logged actions are:

  • Ban / Unban
  • Kick
  • Timeout / Untimeout
  • Boost / Unboost
  • Message delete (self and/or mod)
  • Message edit

This command is used to toggle logging to a specific text-based channel. Once logging to a channel is enabled, preferences can be set using the /config logging scope and /config logging chantype subcommands. You are allowed any number of logging channels within a server. When selecting a channel to be used for logging, you may also specify a type to be used (see /config logging chantype for more details). If no type is provided, it defaults to 'All.' By default, self deletions and edits are not tracked and must be manually turned on with /config logging scope.


modlog

/modlog <user>

Additional required permissions for Chatot: Send embeds

Description: Posts a list of guild-level actions against a specified user.

Scope: Global

Default permissions users must have: Ban members

user: Username (id) of the person to be looked up.

Logged actions are:

  • Ban / Unban
  • Kick
  • Timeout / Untimeout

modpost

/modpost create <channel>
/modpost edit <url>

Additional required permissions for Chatot: None

Description: Has Chatot post/edit the post you specify

Scope: Global

Default permissions users must have: Ban members

channel: The channel where you want the post to go

url: The link to the message

The create subcommand will tell Chatot to post a message in the specified channel. Running this command will then prompt you with a popup where you can enter the message text. Standard Discord formatting options apply. A footer is automatically applied to the message which indicates when and by whom the last edit was made.

The edit subcommand allows mods+ to later edit the post. Only posts that are made by Chatot with the /modpost create command can be edited. Please provide the URL to the message (right click/long press on the message > Copy Message Link), and not just the ID. The entire link is needed in order to quickly determine the location of the post. When running this command, the current message text is prefilled.

The modal is only valid for 5 minutes, so it is recommended to craft your post elsewhere before using this command if that timeframe is insufficient. Posts are limited to 1925 characters, which represents the standard Discord message length limit wtih some characters reserved for the footer. The modal automatically shows you the number of characters remaining. Bot posts are immune to AutoMod.


opt

/opt in
/opt out

Additional required permissions for Chatot: None

Description: Opts in the server into/out of gbans.

Scope: Global

Default permissions users must have: Ban members

Unofficial Smogon servers can run this command in order to opt into or out of global ban (gban) support, which bans a user from every server where this support is enabled. By default, servers are opted out, unless it is an official server. Gban support is mandatory for official Smogon servers and cannot be opted out of. Opting in will allow Chatot to try to ban a user from your server whenever Senior Staff runs the /gban command (similarly for unbanning with /gunban). This process respects any bans already in place and will not overwrite nor undo them. It is recommended to also set up logging with /logging enable so that you may be alerted of any bans or errors during the process.


ping

/ping

Additional required permissions for Chatot: None

Description: Responds with 'pong'. Useful for determining that the bot is live and receiving events.

Scope: Global

Default permissions users must have: None (usable to everyone)


popgban

Populates the database of global bans by pulling the bans from the dev server. This is currently a dev-only command.


randbats

/randbats <pokemon> [gen] [mod]

Additional required permissions for Chatot: None

Description: Posts a Pokemon's randbats sets

Scope: Guild

Default permissions users must have: None (usable to everyone)

pokemon: The name of the Pokemon to query

gen: The gen number or abbreviation. Default: latest

mod: Any randbats modifiers (i.e. LGPE, doubles, no Dynamax)

If no gen is specified, the latest is used. The mod option is used to select a specific meta in the case of LGPE or BDSP, or to query against Randbats Doubles sets or the No Dynamax clause.

This command is experimental. It is a port of the PS /randbats command and may stop working or be missing data at any time.


randrex

/randrex

Additional required permissions for Chatot: Add attachments

Description: Posts a random picture of the goodest of boys, Rex

Scope: Global

Default permissions users must have: Admin

This command has a 10 second cooldown, per server.


rater

/rater add <meta> <user> [generation]
/rater remove <meta> <user> [generation]
/rater removeall <user>
/rater list all
/rater list meta <meta> [generation]

Additional required permissions for Chatot: Send embeds, add reaction, manage messages, send messages in threads

Description: Manages the database of RMT raters

Scope: Guild

Default permissions users must have: Manage Roles

generation: Two-letter acronym used to designate the gen (follows the syntax used in the dex). If omitted, the latest is used.

meta: Tier which the user raters teams for (i.e. OU, UU, NatDex, etc)

user: Username (id) of the rater

Add and remove are self evident. removeall removes a rater from every meta they are listed under. Listing raters allows you to either list every rater for every meta (utilizing paginated embeds) in the case of rater list all, or for just the specified meta in the case of rater list meta. Adding or removing a rater automatically updates a public list of every rater for quick reference. Allowed metas are defined in the /src/helpers/constants.ts file.


reactors

Context menu > Apps > reactors

Additional required permissions for Chatot: None

Description: Outputs a list of unique usernames who reacted to the post

Scope: Global

Default permissions users must have: Ban Members

This is a message context menu command. To access, right click (long press on mobile) on a message, then go to Apps > reactors. A code block containing a list of unique usernames who reacted to the message will be (ephemerally) printed to the chat. Messages that are too long will be truncated, resulting in partial or missing usernames. For a full list of names in those cases, use the Discord client to view the reactions (right click > View Reactions). Reactions from the bot are automatically ignored.



reactrole

/reactrole init [message]
/reactrole add <role> <emoji> <description> [messaage]
/reactrole remove <emoji>
/reactrole clear [message]

Additional required permissions for Chatot: Send embeds, manage messages, manage roles, add reactions

Description: Allows users to react to a message to receive a role

Scope: Global

Default permissions users must have: Manage Roles

message: ID of the message users react on

role: Role the user receives upon reaction

emoji: Emoji users must react with to receive their role (does not support Nitro emojis)

description: Brief description of the role the users receive

First, setup a message using the init subcommand. The init command should be used in the same channel as the message users need to react on (the remaining subcommands can be used anywhere in the server) and be located in a public channel. If no message ID is provided, the bot will post a new message to the interaction channel that will be used to receive reactions. add / remove manages the database that contains the role/reaction pairs. Adding or removing an emoji will cause the bot to add/remove the specified reaction from the monitored message. Additionally, if the bot is the owner of the message, it will update the emoji list contained in the message's embed automatically. These actions do not remove the role(s) from the users. When specifying the emoji, please use the actual emoji object -- in other words, use the :name: syntax to post the emoji into the respective field, as if you were trying to use the emoji in a message. The clear subcommand, if no message id is provided, empties the reaction/role pair database for this server, clears the message of its reactions, and, if applicable, resets the embed to its initial values. In short, it provides a clean slate, which means a new react role message will need to be initialized. If a message id is provided to clear, only that message will be targeted/reinitialized. Note that this subcommand does not remove the roles from the users.

Emojis must be available in the server in which the command is used. The same emoji cannot be used for multiple roles.


remindme

/remindme basic <method> <time> <message>
/remindme custom <method> <month> <day> <year> <hour> <minute> <second> <offset> <message>
/remindme manage [delete]

Additional required permissions for Chatot: None

Description: Creates a reminder for the specified time

Scope: Global

Default permissions users must have: None (usable to everyone)

method: Whether to remind you via DM or post in a channel

time: Delay after which to remind you

message: Your reminder message

offset: The UTC/GMT offset of the datetime entered (positive/negative number)

delete: The timer id to cancel

Depending on the method selected, the bot will send a test DM or post in the interaction channel once the command is sent. This will ensure the bot has the necessary permissions to send your reminder later on. The basic subcommand can be used to quickly pick a time from a list of options after which you will be sent your reminder. IF you wish to set a custom time, you can do so with the custom subcommand. When entering a number for the hour, please use a 24 HR time format. If you wish to see what reminders you have set for yourself or to obtain the necessary ID for canceling the reminder later on, you can use the /remindme manage subcommand and leave the delete field blank. Passing an ID to the delete field will attempt to cancel your specified reminder.

Note that the times sent are the minimum times after which you will be reminded. If the bot is busy doing something at the time of your reminder, there may be a slight delay (this should be fairly negligible im most cases). If for some reason the bot is offline at the time of your reminder, no reminder will be sent.


rmt

/rmt linecount <start> <end>
/rmt channel add <channel> <meta>
/rmt channel remove <channel> [meta]

Additional required permissions for Chatot: Attach files

Description: Dumps the linecounts of users with the Competitive Helper role over the specified time period and manages the channels tracked for new RMTs

Scope: Guild

Default permissions users must have: Ban members

--

rmt linecount

start: Beggining timestamp to search over

end: Ending timestamp to search over

Linecounts and average character counts are summed across all of the RMT channels over the time period specified. A varity of (US) date formats are accepted , but something like Jan 1 2022 will always work. The provided days are inclusive: the range searched is 00:00:00 on start through 23:59:59 on end using the timezone of the server the bot is hosted on (EST/EDT).

--

rmt channel add

channel: The channel (id) to track RMTs

meta: The tier to track new RMTs for within the provided channel

Adds a channel to the database to be tracked for RMTs. Channels must be setup for tracking before raters can be alerted within in or linecounts can be retrieved from it. The syntax for meta matches that used by PS.

--

rmt channel remove

channel: The channel (id) tracking RMTs

meta: The being tracked in the provided channel

If a meta is provided, new RMTs for that meta will no longer be tracked within the provided channel. If no meta is provided, all tracking is turned off in that channel. Note that removing all metas from being tracked in a channel will remove it from the list of channels used to gather linecounts.


rmtpings

/rmtpings <status>

Additional required permissions for Chatot: None

Description: When a new RMT is posted, the initiator of this command will be pinged according to their specified online status.

Scope: Guild

Default permissions users must have: Admin

status: Online status of the user (presence)

By default, users will be pinged whenever a new RMT is posted to the RMT channels regardless of their online status. This command gives raters the ability to subscribe to the pings depending on their online status. For example, they can be pinged only when they are idle, offline, or even not at all.


role

/role add <role> [user1-6]
/role remove <role> [user1-6]
/role mass add <role> 
/role mass remove <role>
/role clear <role> [user1-6]

Additional required permissions for Chatot: Manage Roles

Description: Mananges the roles assigned to a member

Scope: Global

Default permissions users must have: Manage Roles

role: Role to add/remove from users user: Affected users

/role provides a way to manage the roles asigned to a group of users. If only a few members need to be modified, the add/remove subcommands can be used. At this time, 1-6 users can be specified using this subcommand. If a larger set of users need to be targeted, the mass add/remove subcommands are provided. These subcommands prompt the user with a modal (popup) in which they can enter any number of user IDs, each on their own line. To quickly remember a role from all members, the role clear subcommand is provided.


servers

/servers [name]

Additional required permissions for Chatot: None

Description: Lists the servers the bot is in

Scope: Guild

Default permissions users must have: Ban members

name: Name (or id) of the server to query. Bot must be in it

Lists the names of the servers in alphabetical order and the total server count. If a server name or id is provided to name, the server name, id, owner profile, official status, and gban support is returned.


sprite

/sprite <pokemon> [shiny] [home] [gen]

Additional required permissions for Chatot: None

Description: Retrieves the sprite for the specified Pokemon

Scope: Global

Default permissions users must have: None (usable to everyone)

pokemon: The name of the Pokemon

home: Boolean to use the HOME sprites. Default false.

gen: The gen to retrieve the sprite for

shiny: Boolean for retrieving shiny sprites. Default false.

If no gen is provided, the lastest available is used. Regular sprites are pulled from the SmogDex; shiny sprites are pulled from the PS sprite or chatot-assets repositories.


syncdb

/syncdb <scope>

Additional required permissions for Chatot: None

Description: Rebases the C&C or Custom Avatar caches by polling all threads in the relevant subforums

Scope: Guild (Dev command)

Default permissions users must have: Admin

scope: Which database to resync (options are C&C or Custom Avatar)


tier

/tier <name> [gen]

Additional required permissions for Chatot: None

Description: Retrieves the Dex resources for the given tier

Scope: Global

Default permissions users must have: None (usable to everyone)

name: Name of the tier, using the Smogon Dex shorthand format (i.e. OU, NU, Almost Any Ability)

gen: Then gen to retrieve. Default: latest available

An embed is posted to the channel in which the interaction is used. The embed contains a link to the requested tier page on the Dex as well as duplicating the resources on the Dex page. If no gen is provided, the latest gen the tier is available is used.


timeout

/timeout <user> <timeframe> [reason] [dm]

Additional required permissions for Chatot: Timeout (moderate) members

Description: Times out a user from the guild in which the command is used.

Scope: Global

Default permissions users must have: Moderate/Timeout members

user: Username (id) of the person to be kicked.

timeframe: How long to time them out for

reason: Reason for the audit log (not sent to the user)

dm: Message to be sent to the user. Your message is prepended with

You have been timed out from [guild name] for the following reason:

Durations span 1 min - 1 week. The same default times as Discord are used and add 6, 12, and 18 hour options. This command also grants the ability to DM the user when timing them out.


timestamp

/timestamp <month> <day> <year> <hour> <minute> <second> <offset> <format>

Additional required permissions for Chatot: None

Description: Embeds an entered date/time into Discord in the specified format. These embeds appear in the viewer's local time.

Scope: Global

Default permissions users must have: None (usuable by everyone)

offset: The UTC/GMT offset of the time you entered. Accepts positive/negative/decimal numbers format: The format the date shows up as. For a full list of options, see the API docs

Most options are self evident. When entering the hour, please use a 24 hr format. Although the options are presented using a 12-hour clock, they can show up to others in a 24 hour format depending on their language settings. For example, the default option will show up to others as November 28, 2018 9:01 AM if they have a 12 hour clock based on their Discord language settings, or 28 November 2018 09:01 if they natively use a 24 hour clock.


tourpings

/tourpings sub <tour> <role> <channel>
/tourpings unsub <tour> <role>
/tourpings host add <tour> <role> [psladder]
/tourpings host editrole <tour> <role>
/tourpings host remove <tour>

Additional required permissions for Chatot: None (possibly Ping All Roles)

Description: Manages the tour ping relay system across servers

Scope: Global

Default permissions users must have: Ban Members

--

tourpings sub

tour: The tour/tournament you want to subscribe to

role: The role in your server that should be pinged

channel: The channel where you want the ping to go

When a role setup for the ping relay network gets pinged, staff can use this command to have Chatot also ping a role in their server. For example, if role @OU Matches gets pinged in the OU server when an important game starts, Chatot will ping role in channel within your server as well. tour is name of the matches that are pinged for.

You may want to consider setting up this subscribed role as a react role.

--

tourpings unsub

tour: The tour/tournament you no longer want to subscribe to

Removes any pings for the given tour.

--

tourpings host add

tour: Description of the tour that identifies the games being pinged for

psladder: Name of the ladder on PS associated with the tour (i.e. gen9ou, gen8monotype)

role: The role you ping to announce games for this tour

Whenever the role gets pinged in your server, any servers subscribed to the tour will be pinged in their servers as well. When choosing a name for the tour, pick something that makes it clear what you are pinging for, i.e. SV OU SPL, WCOP, SCL, etc. The name you enter for tour is how other servers know what they are subscribing to. If you do not specify a psladder, subscribers will be notified of all pings of the role. Specifying a psladder allows for subscribers to have more granular control over what they get alerted for. For example, the Smogon tours server may ping @SCL Matches for all matches regarding SCL. By setting running the command with the following

/tourpings host add tour:SCL role:@SCL Matches

Servers that subscribe to SCL will be notified of all matches regardless of the ladder; i.e. whenever @SCL Matches is pinged. Building on the above, if an additional tour SCL SV OU is setup with

/tourpings host add tour:SCL SV OU role:@SCL Matches psladder:gen9ou

Then other servers will see SCL and SCL SV OU as tour options to subscribe to. The former will notify them anytime the @SCL Matches role is pinged. The latter will notify them only when @SCL Matches is pinged for gen9ou matches.

The setup is subject to the following restrictions:

  • The name of the tour must be unique
  • The combination of psladder + role must be unique

The first restriction is self-explanatory: you can't use the same name for multiple tours. The second restriction means that 2 different tours cannot use the same combination of ladder and role. If you are trying to ping for multiple tours within your tier, each tour must be associated with a different role.

For the ping to work, the role and URL must be sent in the same message. At this time, only the play.pokemonshowdown.com and smogtours.psim.us domains are whitelisted.

Only official Smogon servers are able to manage pings that others can subscribe to.

--

tourpings host editrole

tour: The name of the tour

role: The new role whose pings are relayed to other servers

This subcommand allows staff to edit the role that gets pinged for a tour. This command does not alert the subscriber list, so any servers that are subscribed to the tour will still receive alerts with the new role. Note that the restrictions apply as set forth in the /host add subcommand.

--

tourpings host remove

tour: The name of the tour to no longer propagate pings for

This subcommand is used to remove a tour from the list of subscribables. Any servers that are subscribed to the tour will be automatically unsubscribed.


(un)sticky

Context Menu > Apps > (un)sticky

Additional required permissions for Chatot: Manage Messages

Description: Sets a pin to be kept at the top of the pin list

Scope: Global

Default permissions users must have: Manage Messages

This is a message context menu command. To access, right click (long press on mobile) on a message, then go to Apps > (un)sticky. Stickying a message will keep it at the top of the pins list even if other messages are subsequently pinned in the channel. Running the command again on the message will restore the default Discord functionality (newest pins on top). This command operates under the following interactions:

Message is... Action
Not pinned + not stickied Pins the message and keeps it at the top
Pinned + not stickied Moves the pin to the top (if necessary) and keeps it there
Pinned + stickied No longer keeps the message at the top (restores default functionality)
Manually unpinned + stickied Message is unpinned and no longer kept at the top if re-pinned (restores default functionality)

Only 1 message is allowed to be stickied per channel; if a new message is stickied, the functionality will transfer to the new message (the old message will not be unpinned and must be done so manually). The bot will automatically delete the system pinned message alert.


unverify

/unverify

Additional required permissions for Chatot: None

Desription: Unlinks a user's Discord and forum accounts.

Scope: Global

Default permissions users must have: None (usable to everyone)

Removes the link between a user's Discord and Smogon forum profiles. This will also reset their verified status in all servers that use Chatot for verification (i.e. roles that are removed upon verification will be reapplied; roles that are added to verified users will be removed). Upon reverification with /verify, your status will be restored within that server only. You will either need to leave any other server that uses verification and rejoin to be granted access, or run the verify command in those servers as well. Users are prompted with a confirmation message upon running the command.


verify

/verify [profile]

Additional required permissions for Chatot: Manage Roles

Desription: Links a user's Discord and forum accounts.

Scope: Global

Default permissions users must have: None (usable to everyone)

profile: URL to the user's Smogon forum profile.

Allows a user to link their Discord profile by providing the URL or username (case sensitive) of their forum profile. Users must have their Discord username (the all-lowercase-unique-to-them one) in their Account Details > Identities page. This command is used to add/remove the user role specified in /config verify to grant themselves access to the server.


whois

/whois discord <user>
/whois forum <user>

Additional required permissions for Chatot: None

Description: Returns the pair to a passed Discord or forum account

Scope: Global

Default permissions users must have: Ban Members

user: Discord profile/id or Smogon forum profile URL/username

The discord subcommand is used to get a user's forum information given their discord profile or user id. Selecting a user's profile from the suggested options is only available if the user is in the server. Looking up the profile of users who are not currently in the server should be done via their Discord user id (ids can also be used if they are in the server).

The forum subcommand is used to get a user's Discord(s) given a link to their forum profile or their forum username. Note that username queries are case sensitive. Discord users do not need to be in the server for this command to work.

To return data, users who are looked up with this command must first have linked their accounts with the /verify command.


wiki

/wiki

Additional required permissions for Chatot: None

Description: Posts a link to this page

Scope: Global

Default permissions users must have: None (usuable by everyone)

RMT Monitoring

Although not a command, another primary feature of the bot is to monitor the RMT channels in the main Smogon server and alert raters whenever there is a new team posted. The primary logic for this command is in /src/helpers/rmt-monitor.ts. By default, raters are notified every 6 hours, unless they unsubscribed using the /rmtpings command.

C&C Monitoring

Chatot also tracks the C&C progress of threads posted in the relevant subforums. It does this by monitoring the thread titles and prefixes for changes. The bot will look for text such as QC/GP #/# or the thread prefix to determine what stage the thread is in. The exact format is flexible, although the QC/GP indicator should come before the numbers. In the case of OMs or past-gen analyses, the title/prefix is also used to determine the applicable generation or meta, as appropriate. Any of the standard abbrevations for the gen can be used (i.e. ORAS, BW, Gen 5, ss, etc). Note that the bot periodically checks for updates, so alerts may not be immediate.

CA Monitoring

Chatot tracks the progress of Custom Avatar (CA) submissions. When a submission moves to the QC stage, the spriters are tagged in the Smeargle Studio discord with a link to the thread and the attached sprite image. This functionality does not have an associated command.

Just For Fun

Chatot may also respond to some text in the chat even without a slash command. Staff can configure this functionality with the /config fun group of commands. These features may change at any time (or removed if abused) and are meant to be Easter eggs, so they will remain undocumented. If you're nice to the bot you might just find some!