Commands - shinyfinder/chatot-smogon GitHub Wiki

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)

Fun!:

  • Response to regular text (configurable)
  • Games, like kunc and sheep

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.

Some commands are available in DMs or anywhere on Discord via a user installation.These are defined in the scope fields below, using the following syntax:

  • All guilds - command is available in any guild (server) that has added Chatot.
  • Select guilds - command is available only in certain Chatot guilds.
  • DMs with Chatot - command is usable in DMs with Chatot (subject to your DM perms).
  • DMs with others - command is usable in DMs with 1+ users other than Chatot (requires User install).

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.

The usage of all commands requires the user to have Send Messages (Send Messages in Threads, where appropriate) permissions in the channel where they use the command. This is true for all types of commands -- slash, context (right click), and user.

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: All guilds

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: All guilds

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. Does not DM if not provided

If a dm string is provided, the DM that is sent takes the form of the following:

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

[reason]

If this server is a [Smogon directory server](<https://www.smogon.com/forums/threads/3652546/>) and you wish to appeal the ban, read and fill out this [form](<https://www.smogon.com/forums/discord-ban-appeal-form/>).

The final line is only sent if the server is designated as "official" (Smogon-owned); otherwise, this line will be absent. Chatot is subject to the same restrictions as any other user when sending DMs: it must share a server with the recipient and the recipient must have DMs turned on. If either is untrue, the DM will fail, but the user will still be banned. If you try to DM the user, Chatot will be clear if it was successful in the response to the command.


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: Select guilds

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 reqs <role> <method> [accountage] [approvalchan]
/config verify button <channel>
/config verify disable
/config logging channel <channel>
/config logging ignore
/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: All guilds

Default permissions users must have: Ban Members

--

config verify reqs

/config verify reqs <role> <method> [accountage] [approvalchan]

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)

approvalchan: Channel to log new joins to grant manual approval

/config verfiy reqs 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 or button. 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.

The approvalchan optional field sends a message to the provided channel for server staff to manually grant the user access, rather than Chatot automatically modifying their roles upon checking against verification requirements. The message is sent after checking against the user's banned status and forum account creation date (assuming this requirement is set). The approval message contains the user's Discord profile, linked forum profile, and two buttons -- Approve, which modifies the user's roles and grants them access to the server, and Deny, which does not modify their roles and leaves them locked out. Users may run the /verify command again (or push the button again) to request access at a later date if they are denied; however, a user cannot have more than 1 outstanding approval message (i.e. barring rare circumstances, Chatot won't send multiple approval messages for the same user). It is assumed that staff will take any next steps manually if the user's access is denied (i.e. messaging them, banning them, etc). If approvalchan is left blank, Chatot will modify roles automatically; this is the default behavior.

Subsequent runs of this command will overwrite all values, so you need to pass all relevant values anytime you run it.

--

config verify button

channel: The text channel to send the verify button to.

This command sends a button to the designated channel that users can press to initiate the verification flow. Pressing this button is equivalent to running the /verify command, presenting an alternative interface for users. The button has the benefits of not requiring a slash command (which may not show up depending on their client version) and not requiring users to have the Send Messages permission in the channel where the button is sent (Chatot will still need the permission so it can send the button there).

--

config verify disable

Turns off verification in the server.

--

config logging channel

/config logging channel <channel>

channel: Channel to receive the logs

Chatot no longer uses the concept of logging channel types; now, all actions can be chosen individually for any channel. This command sets up the provided channel to receive server logs. Running the command presents the user with a dropdown menu where they can select which options they want logged. Once at least one change is made to the items selected in the dropdown, clicking outside of the dropdown will submit your choices. Upon submission, your choices will overwrite the saved configuration for the channel. A server is allowed any number of logging channels. Note that a user's forum profile is only printed for joins if the server uses verification.

Chatot will only log message deletions and edits from channels that it has read access to.

--

config logging ignore

/config logging ignore

This command presents the user with a dropdown where they can select which channel(s) or channel category(ies) Chatot should not monitor for message deletions and edits. Choosing a channel category will automatically ignore any new channels that are added to that category. Once at least one change is made to the items selected in the dropdown, clicking outside of the dropdown will submit your choices.

Channels (categories) chosen will overwrite the list of any currently ignored channels. To have Chatot resume monitoring of these channels, run this command and uncheck them or click the button.

--

config dex

/config dex [gen] [format]

Sets the default gen and/or format to use when printing an analysis with /dex. Formerly /dexdefault. Passing nothing to either field resets the values to nothing within the database.

--

config cc add

/config cc add <channel> <tier> <gen> [role] [stage] [cooldown] [tierprefix]

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

The forums that Chatot's tracks for C&C status updates are defined within the CMS's Formats page. If a new C&C forum is created (i.e. at the start of a gen), this CMS page will need to be updated as well to point Chatot to it. If it's a new subforum, setting Chatot to track it via the above command is not enough to receive alerts. However, for any established subforums, this step is unnecessary. If you have any issues, questions, or doubts, contact shiny finder. Editing of the Formats page is restricted to Smogon badgeholders.

--

config cc remove

/config cc remove <channel> <tier> <gen>

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

/config cc removeall

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

--

config tickets

/config tickets <threadchan> [logchan] [staff] [staff2] [staff3]

threadchan: Parent channel for button and private threads

logchan: Channel for logging new thread creation alerts

staff: The staff role(s) 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

/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

/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

/config fun cooldown <seconds>

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

/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

/config fun allowance <flag>

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

/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: All guilds | DMs with Chatot | DMs with others

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: All guilds

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

Custom commands are prefix commands, which users can use by entering the command on its own line in the chat, i.e. !rule1. Users are able to define custom snippets of text they can readily post with the bot. 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.

--

custom add

Creation requires specifying a prefix (most special characters), a name, and the text to print. A modal (popup) is used when adding a 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). Command names (the text users enter into the chat to invoke it) must be unique, even if different prefixes are used.

--

custom remove

name: Unique identifier for the command (exclude the prefix), specified by the user on creation

Deletes the provided custom command. For example, if you have a command that users enter !rule1 into the chat to use, the name field is rule1. Custom commands registered to the server can be retrieved with /custom list. Although /custom list provides both the prefix and command name, please exclude the prefix when entering the name in /custom remove.

--

custom edit

name: Unique identifier for the command (exclude the prefix), specified by the user on creation

This subcommand allows you to edit the prefix and output for the provided command name. If you wish to rename the command, you have to delete it and readd it under the new name.

--

custom list

Lists all custom commands and their required prefixes registered to the server.


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: All guilds | DMs with Chatot | DMs with others

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: All guilds | DMs with Chatot | DMs with others

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: All guilds | DMs with Chatot | DMs with others

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: All guilds | DMs with Chatot | DMs with others

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.


dumpunverified

/dumpunverified <guild>

guild: Name/id of the server

Returns the list of users in a server that do not have a connected forum account. Presumably, these are all the users who were manually verified without Chatot. This is currently a dev-only command. If you need this information, contact shiny finder for the list or alternatives.


edit

Right click/long press on message > Apps > edit

Additional required permissions for Chatot: None

Description: Edits a modpost

Scope: All guilds

Default permissions users must have: Ban Members

At this time, the following posts may be edited with this command:

Right click/long press on the message you wish to edit, then expand Apps. Clicking edit will present you with a modal where you can enter the new message text. The modal will be populated with the current message text. If logging is enabled in the server, Chatot will also log the old content in the respective logging channel as a form of version control. Desktop users can hover over the code block containing the old message text and click the copy button in the top right corner of the block to quickly copy the old text. The old text is logged to channels of type All, Edits, Mod executed, or Message target.

Chatot will attempt to resolve any tags (user or role) and channel references into a pingable format if it detects you are trying to tag/link to them. For example, @shinyfinder will resolve to <@id> and ping. This is best effort; be mindful that puncuation may throw it off (i.e. send a message to @shinyfinder. will not resolve the user shinyfinder, because usernames can include periods. One way to solve this is add a space before the period.) and usernames will only resolve if they are in the server. If it fails, you can always edit it again. The most reliable method is to always use IDs when trying to ping or link to a channel, but this is here for convenience.

A common error for this is a Missing Permissions error, like the one shown below. This is slightly different than the same error response that you might see from Chatot, as it is sent directly by Discord (notice how the text is red). This error message will change to "The application did not respond" after 3 seconds and clicking off then back into the channel (message will still be red). There are two likely reasons for this error:

  • The user does not have location permission to use the command in the channel (i.e. they have permissions to use the command, so it shows up, but not in that channel, so it errors). This can be fixed by reviewing your location settings in the Integrations menu.
  • The user does not have Send Message permissions in the channel. This can be fixed via the Edit Channel settings.

Missing Permissions error


emojistats

/emojistats dump
/emojistats reset

Additional required permissions for Chatot: Attach Files

Desription: Retrieves and resets the emoji usage counts for the server

Scope: Select guilds

Default permissions users must have: Manage Roles

The dump subcommand is used to retrieve the emoji use counts for the server. Only the server's custom emojis are tracked across message posts and reacts. The output is a CSV file that can be imported into something like Google sheets for processing. The reset subcommand is used to reset the counts for the server to 0, in case you wish to track counts over a specific time. Users are presented with a confirmation before any information is deleted. As always, this action cannot be undone.


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: All guilds

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

--

fc add

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

code: Your friend code

Adds your friend code for the selected platform to the database. Can be retrieved or deleted with the other commands.

--

fc remove

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

code: Your friend code

Removing a friend code removes all of the stored entries for the specified platform, or only the specific code if provided.

--

fc list

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

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

Friend codes are listed 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: All guilds

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

Deprecated as any alts are now provided with all subcommands of /whois.

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.


games

/games hilo
/games kunc
/games wooloo

Additional required permissions for Chatot: React to Messages (hilo), Attach Files (wooloo)

Description: Starts a game in the chat

Scope: All guilds

Default permissions users must have: Admin

At present, Chatot comes with the following 3 games. All games have a set time limit, ranging from 1-10 minutes, and only the current gen is used. One game per channel is allowed to be running at a time. This is a standard command and not influenced by the "fun" settings.

--

games hilo

Also known as "over-under," the goal of the game is to guess whether the Pokemon's stat is higher or lower than the provided value. Users guess by reacting to the post.

--

games kunc

Players are given 4 moves from a random SmogDex set in the current gen. Players then try to be the first one to guess the name of the Pokemon in the chat.

--

games wooloo

Also known as "sheep," players are given 5 random questions. The goal is for each player to guess the answer to the questions they think everyone else will put. Whoever gets the most matches wins. At the end of the round, Chatot posts the top 3 scores and a file containing everyone's guesses.


gban

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

Additional required permissions for Chatot: Ban Member, Attach Files

Description: Bans specified user(s) from every official or opted-in server

Scope: Select guilds

Default permissions users must have: Admin

This group of commands is only usable in the main Discord server by Senior Staff and Upper Staff.

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

When the bot joins a new server, Senior Staff is given a prompt to mark the server as official, which enforces gbans and disables the server's ability to opt out of them. The default classification when Chatot joins a new server is unofficial opted out.

The Attach Files permission is needed in case the output would exceed Discord's post character limit.

--

gban user

user: Username (id) of the person to ban

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

This command allows you to ban a single user from every official Smogon server and any unofficial servers subscribed to the feature with opt in. 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 inherently 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

--

gban group

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 ("Banned from forums"). When entereing IDs, please enter 1 per line. 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.

The output and behavior of this command is otherwise the same as /gban user, which is described above.

--

gban enforce

server: Name (case insensitive) or id of the server to restore gban enforcement (mark it as official)

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.

--

gban unenforce

server: Name (case insensitive) or id of the server to remove gban enforcement (mark it as unofficial)

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.


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: Select guilds

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: All guilds

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: All guilds

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: All guilds | DMs with Chatot | DMs with others

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> <channel> <duration> <units>
/livetour extend <post> <duration> <units>
/livetour close <post>

Additional required permissions for Chatot: Add Reaction

Description: Manages live tour signups

Scope: Select guilds

Default permissions users must have: Admin

--

livetour create

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

channel: The channel to which the signup post is sent

duration: How long signups are open or extended

units: The time units of the duration

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.

Signups are currently soft limited to 2 weeks. Here is an example of the input/output:

Livetour create example

--

livetour extend

post: Message link to the signup post

duration: How long signups are open or extended

units: The time units of the duration

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).

--

livetour close

post: Message link to the signup post

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.


modlog

/modlog <user>

Additional required permissions for Chatot: Send embeds

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

Scope: All guilds

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 <channel>

Additional required permissions for Chatot: None

Description: Has Chatot post/edit the post you specify

Scope: All guilds

Default permissions users must have: Ban members

channel: The channel where you want the post to go

This command 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.

To later edit the message, see the /edit command.

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.

Chatot will attempt to resolve any tags (user or role) and channel references into a pingable format if it detects you are trying to tag/link to them. For example, @shinyfinder will resolve to <@id> and ping. This is best effort; be mindful that puncuation may throw it off (i.e. send a message to @shinyfinder. will not resolve the user shinyfinder, because usernames can include periods. One way to solve this is add a space before the period.) and usernames will only resolve if they are in the server. If it fails, you can always edit it again with edit. The most reliable method is to always use IDs when trying to ping or link to a channel, but this is here for convenience.


opt

/opt in
/opt out

Additional required permissions for Chatot: None

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

Scope: All guilds

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 /config logging channel so that you may be alerted of any bans or errors during the process.


perms

/perms <perm> <in> <for>

Additional required permissions for Chatot: None

Description: Checks whether a user/role has a permission in the specified channel

Scope: All guilds

Default permissions users must have: Manage Roles

perm: The name of the permission to check (uses PascalCase)

in: The channel or channel category

for: The member/role whose permissions to check

If a role is provided, this command returns whether the role has the specified permission in the channel, given server-level permissions and any channel overrides. Similarly, if a user is provided, the final permission of a specified user is calculated given all overrides at the server level for their roles and any channel overrides for their roles/user. In both cases, the resoning for the final answer is provided, starting with the most generic settings at the server level and specifying any overwrites at the channel level. The permission hierarchy is described here, but member overrides are the most impactful and @everyone (default) settings at the server level are the least.

If you wish to see every permission a user/role has, you can specify 'All' as the perm.

Note that because the autocomplete list of permissions is that available to bots, you may not recognize some (I didn't). A full list is available here, but if you don't recognize it, just ignore it.


ping

/ping

Additional required permissions for Chatot: None

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

Scope: All guilds

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: Select guilds

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: All guilds | DMs with Chatot | DMs with others

Default permissions users must have: Admin

This command has a 10 second cooldown, per server.


rater

/rater add <format> <user>
/rater remove <format> <user>
/rater removeall <user>
/rater list

Additional required permissions for Chatot: Add Reactions (/rater list only)

Description: Manages the database of RMT raters

Scope: Select guilds

Default permissions users must have: Manage Roles

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

user: Username (or id) of the rater

Add and remove are self evident. removeall removes a rater from every format they are listed under. list replies with a paginated embed the interaction creator can navigate via reactions. All raters and their respective formats are listed; to list a subset of formats or users, see the /raters command.


raters

/raters [format] [user]

Additional required permissions for Chatot: None

Description: Lists the the registered team raters

Scope: Select guilds

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

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

user: Username (or id) of the rater

If a format is provided, all of the raters for that format are provided. Providing a user lists the formats they rate for. If a user provides both a format and a user, Chatot will confirm whether they rate for that format. All responses are ephemeral.


reactors

Context menu > Apps > reactors

Additional required permissions for Chatot: None

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

Scope: All guilds

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> [message]
/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: All guilds

Default permissions users must have: Manage Roles

--

reactrole init

message: ID of the message users react on

Initializes a post--whether to have Chatot post a new one or to use one of your own--that allows users to react to gain a role. The init subcommand 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. Emojis must be available in the server in which the command is used. The same emoji cannot be used for multiple roles.

This command must be used first before the other subcommands become active.

--

reactrole add

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

message: ID of the message users react on

Adds an emoji+role pair to the monitored message. Adding an emoji will cause the bot to add the specified reaction to 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. 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. Emojis must be available in the server in which the command is used. The same emoji cannot be used for multiple roles.

Although a required field, the description is only relevant for a react role message owned by the bot. This is the text that shows up in the embed posted by Chatot so users know what the role does. If you (or anyone other than Chatot) own the post, then this field is ignored.

message is required when you have more than 1 react role message in a server.

--

reactrole remove

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

Removes the specified emoji from the list of reactions the bot listens for on the post. Removing an emoji will cause the bot to 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. This action 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.

--

reactrole clear

message: ID of the message users react on

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, only that message will be targeted/reinitialized. Note that this subcommand does not remove the roles from the users.


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: All guilds | DMs with Chatot | DMs with others

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

--

remindme basic

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

time: Delay after which to remind you

message: Your reminder message

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.

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.

If this command is used in DMs, only the DM method is supported. Running this command in a server will allow you to select either method.

See /remindme manage for cancelling the reminder.

--

remindme custom

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

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

message: Your reminder message

Allows you to have the bot remind you of your message at the specified date and time. 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. When entering a number for the hour, please use a 24 HR time format.

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.

If this command is used in DMs, only the DM method is supported. Running this command in a server will allow you to select either method.

--

remindme manage

delete: The timer id to cancel

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. The output is formatted as ID: [reminder time] [message]. Passing an ID to the delete field will cancel your specified reminder.


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: Select guilds

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: Select guilds

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: All guilds

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: Select guilds

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: All guilds | DMs with Chatot | DMs with others

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>

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

Rebases the C&C or Custom Avatar caches by polling all threads in the relevant subforums; also updates the active list of gbans. Dev command.


syncgbans

/syncgbans

Additional required permissions for Chatot: Ban Members

Description: Ensures all gbans are enforced in the current server

Scope: All guilds

Default permissions users must have: Ban Members

This command ensures that any active gbans are enforced in the server, without overwriting any bans you have in place. If any missing bans are found, they are banned. If any bans fail, they will be reported. To prevent error spamming, please ensure that Chatot can reasonably ban any users in question (i.e. its role is high enough in the roles list) before running this command. Users who are banned with this command are subject to being unbanned if/when the gunban command is run by Senior Staff.

If you have logging enabled, Chatot will report if it has trouble banning a user during the global ban process in the logging channel. If you did not receive an error message and were not contacted by Senior Staff, then you can reasonably assume that the list of gbans is up to date. However, if you added Chatot recently, recently opted into gbans, or just want to make sure, feel free to run this command.


testnotify

/testnotify <message>

message: The notification to send

Tests the Discord notification infrastructure by sending a message to the interaction channel. Dev command.


tier

/tier <name> [gen]

Additional required permissions for Chatot: None

Description: Retrieves the Dex resources for the given tier

Scope: All guilds | DMs with Chatot | DMs with others

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: All guilds

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: All guilds | DMs with Chatot | DMs with others

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.

Chatot will also post a copy/pastable output if you need to use the timestamp in another message.


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: All guilds

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: All guilds

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.


verify

/verify

Additional required permissions for Chatot: Manage Roles

Desription: Links a user's Discord and forum accounts

Scope: All guilds | DMs with Chatot | DMs with others

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

Allows a user to associate their Discord profile to their forum account. Running the command will present users with a unique URL to the forums, which will detect their login and associate their accounts (previously, users were required to enter their Discord username into their Identities field; this is no longer required). This association cannot be removed or updated once established, given users are only allowed 1 forum account. However, users may associate any number of Discord accounts to their forum account. This command is used to add/remove the user role specified in /config verify reqs to grant themselves access to the server. Staff can lookup this association at any time with the /whois family of commands.

Running this command in DMs will allow you to link your forum and Discord profiles, but your roles (server access) will not be updated. To gain access to a server, this command must be run within it.

A more detailed description can be found on the Verification page.

Users sometimes complain that the command does not show up for them in the chat. Common reasons include:

  • The Discord API is lagging/unavailable.
  • Their client is outdated.
  • Desktop only: They have legacy chat input enabled (User Settings > Accessibility > "Use the legacy chat input").
  • The command is not able to be run by unverified users. See Managing Command Permissions.

If you or anyone else can see the command in the server, then it's not a Chatot issue. Address the issues above or consider using /config verify button to give users a button to press instead of/in addition to a command to run.


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: All guilds

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 these commands 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: All guilds | DMs with Chatot | DMs with others

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/rmtMonitor.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.

Setting up a subforum to be tracked by Chatot is done within the Formats tab of the dex, available to be edited by anyone with a forum badge.

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.

Draft League Ad Monitoring

Chatot relays approved Draft leagues from the forums into the Smogon Draft Discord server, along with relevant info like the title, format, and signup close date. The checks for new posts are roughly every 30 seconds, subject to change. 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!

⚠️ **GitHub.com Fallback** ⚠️