This wiki page contains a list of commands and their explanation.
These commands can be executed by everyone.
!!/live— Replies a random message taken from a list so you can see that SmokeDetector is still running.
!!/status— Shows the UTC date when SmokeDetector started running.
!!/ms-status— Shows the status of metasmoke. If SmokeDetector is unable to communicate with metasmoke, then SmokeDetector will assume that metasmoke is down and continue processing posts and reporting them into chat without attempting to communicate with metasmoke.
!!/ms-up— Instructs SmokeDetector that metasmoke is up. SmokeDetector will attempt to communicate with metasmoke. This is the normal, default state.
!!/ms-down— Instructs SmokeDetector that metasmoke is down. SmokeDetector will not attempt to communicate with metasmoke.
!!/ver— Shows the running Git revision.
!!/commands— Shows a small help message about SmokeDetector.
!!/apiquota— Shows the remaining API quota of SmokeDetector.
!!/queuestatus— Shows the queue status of BodyFetcher.
!!/blame— Chooses randomly from a list of people who have talked recently in the room.
!!/brownie— better versions of
!!/alive, aka ‘fun’ commands.
!!/location— Replies with the current location, as set in the
!!/test site=<site_domain> <string>— Runs
<string>against the filter as if it appeared in a question title, body, or username. To test specifically, use
!!/test-qfor question body,
!!/test-tfor title, or
!!/test-ufor username. Note that the site is optional. If site is present, the command will use filters for that site.
!!/iswlu— Checks if a user is blacklisted/whitelisted. Two formats are accepted:
!!/whoami— Replies with the bot’s user id for that site
!!/whois admin— Replies with a list of admins (and who’s currently in the room).
!!/whois code_admin— Replies with a list of code admins (and who’s currently in the room).
!!/amiprivileged— Lets you know if you are in the list of privileged users
!!/amicodeprivileged— Lets you know whether or not you have code privileges (i.e. you can blacklist without approval)
!!/notify <chatroom_ID_number> <site_domain>— Tells SmokeDetector to ping you, in the given chatroom, when a post is reported on the given site.
!!/notify- 89 parenting.stackexchange.com
-) and avoid spamming the chat room with too many requests. See this chat message and the surrounding context.
!!/unnotify <chatroom_ID_number> <site_domain>— Cancels the previously set notification. Also, accepts the silent mode suffix (
!!/unnotify-all- Removes all notifications.
!!/willbenotified <chatroom_ID_number> <site_domain>— Reports whether you will be pinged, in the given room, about spam on the given site.
!!/allnotificationsites <chatroom_ID_number>— Shows all sites that you will be pinged for in the given room.
why— Shows the reason that SmokeDetector caught a post.
whydata is only kept for the last 50 reports. If you need to see older data, it can be found in the post record on Metasmoke.
autoflagged— Returns if the post was autoflagged or not, and if so, what users were used.
These commands require privileges. Note that some commands may be disabled in some rooms. You may talk to others to understand why.
!!/report <post URL 1> [<post URL 2> [...]] ["custom reason"]— Makes SmokeDetector scan and report a specific post/multiple specific posts in Charcoal HQ and other applicable rooms. Recommended over
!!/scanif you’re sure the post is spam. The originator of each post will be added to the blacklist if the post wouldn’t have been caught otherwise. Maximum 5 posts at a time. An optional custom reason may be supplied so others are clearer why you’re reporting it. Additionally, the post will be added to the database on Metasmoke, just like all other reported posts.
!!/report-force <post URL 1> [<post URL 2> [...]] ["custom reason"]— Same as
!!/report, but causes SmokeDetector to ignore the active instance’s record of the post being recently reported.
!!/scan <post URL 1> [<post URL 2> [...]] ["custom reason"]— Forces SmokeDetector to scan a post. This is useful when you’re not sure if a post is spam and don’t want to report it. Smokey will go through all the usual processes of scanning a post and report it if it’s spam, and will tell you that it’s not spam otherwise. If you’re sure it’s spam but it isn’t being caught, use
!!/reportinstead. A custom scan reason may be supplied.
!!/allspam <user URL>— To be used if a spammer has many posts so you don’t have to use
!!/report. This command posts a message about the user in all applicable rooms. Note that this command does NOT auto-TPU anything, for various reasons. Both individual site and network-wide user profiles are supported. It has an alias,
!!/reportuser <user URL>.
!!/feedback <post_URL> <feedback_type>- Takes a valid SE post URL as input, and manually sends the given feedback to metasmoke. Note that this won’t blacklist/whitelist users automatically.
!!/reboot— Reboots SmokeDetector.
!!/stappit— Stops all SmokeDetector instances.
!!/stappit <string>— Stops all SmokeDetector instances where
stringis included in the location (e.g.
!!/stappit undowould stop
Undo/DO, but not
!!/standby <string>- Places that instance into standby mode.
!!/pull— Pulls new revisions from GitHub.
!!/pull-sync-force— For use when other methods of resolving git issues, particularly “HEAD isn’t at tip of origin’s master branch”, fail. The command performs
git checkout -b temp origin/master; git branch -M master, which replaces the SmokeDetector instance’s local master branch with what’s on GitHub. This command is now deprecated because other solutions like
git reset --hard origin/masterare already in place, which should theoretically handle all potential issues that would have required this command to resolve. Use
!!/pull-sync-forceif you really need to.
!!/master— When SmokeDetector enters reverted mode, use this command to go back to the
!!/gitstatus— Shows which git branch the SD instance is on and if it is behind origin/deploy.
!!/errorlogs <N>— Shows lines of the error logs for the last N exceptions. (You can also use
!!/block <N>— Blocks SmokeDetector globally for N seconds; no alerts will be posted. Example:
!!/block 600blocks globally for 10 minutes.
!!/block <N> <room_id>— Blocks SmokeDetector in the specific room for N seconds; no alerts will be posted there. Example:
!!/block 3600 89blocks alerts in the Tavern for one hour.
!!/unblock— Unblock SmokeDetector manually, resetting global block only.
!!/unblock <room_id>— Unblock SmokeDetector manually in the specific room.
!!/invite <room_id> <roles separated by commas...>- Temporarily invites SmokeDetector to the given room on the current site. Roles are the same as in
!!/stopflagging- An emergency measure to immediately disable all autoflagging. Once disabled, autoflagging can only be re-enabled by an Admin.
These lists are maintained per SmokeDetector instance. The SmokeDetector instances do not share these lists between themselves.
The user-blacklist is a list of users which have all of their posts reported by SmokeDetector. The user-blacklist is quite dynamic. Users are primarily added to the user-blacklist when someone gives
tpu feedback to a post the user has authored. Users are automatically removed from the user-blacklist when
fp feedback is given for a post they have authored. Users can also be explicitly added or removed with the following commands:
!!/addblu(same syntax as
!!/addwlu) — Adds a user to the blacklist (this means that any post of this user will be reported).
!!/rmblu(same syntax as
!!/rmwlu) — Removes a user from the blacklist.
The user-whitelist is a list of users for which detections are ignored which would normally trigger on the user’s name. Users are added to the list if their post receives
fpu feedback. Users can also be explicitly added or removed with the following commands:
!!/addwlu <user_ID> <site_name>— Adds a user to the whitelist (this means that if the username for that user matches one of the regexes, this will be ignored).
!!/rmwlu <user_ID> <site_name>— Removes a user from the whitelist.
The blacklists and watchlist detections are lists of regular expressions (regexes) that are used to test posts. The exceptions to this are the watched_numbers and blacklisted_numbers lists, which are lists of numbers that are tested against posts as text both verbatim and “normalized” (with everything but numbers removed).
The regexes for the blacklist-keyword and watchlist have
\b prepended and appended to them prior to testing against post bodies, titles, and usernames. For both of those lists, the
s flags are set (case insensitive and
. matches anything). The other lists do not bookend the regexes with
\b and only have the case insensitive flag,
Other than the
-number lists, what you are providing is a regular expression. As such, make sure regex special characters are escaped (in particular,
. characters should be escaped as
\.) when not used as the special character. The regular expression variant that SmokeDetector uses is the
When adding to the blacklists, any exact match in the watchlists to what you are adding to the blacklist will be automatically removed from the watchlists.
!!/watch* commands, if you are a code admin on metasmoke, your change will apply immediately, once CI passes; otherwise, a pull request will be created for your changes so that it can be reviewed.
!!/blacklist— This command is deprecated. Use one of the four specialized blacklist commands instead, which are shown below. If run, this command will print a help.
!!/blacklist-keyword <regex>— Adds a regular expression pattern to the list of bad keywords. Prior to being used, all regexes on this list automatically have
\badded to the start and end of the regex.
!!/blacklist-number <number text>— Adds a number to the number blacklist. The text may contain non-number characters and is tested verbatim against potential spam. In addition, it’s tested “normalized”, which is with both the blacklisted number text and the post reduced to numbers.
!!/blacklist-username <regex>— Adds a regular expression pattern to the username blacklist. Regexes on this list do not have
\badded to the start and end of the regex. These regexes are tested only against usernames.
!!/blacklist-website <regex>— Adds a regular expression pattern to the website blacklist. Make sure regex special characters are escaped (in particular,
.characters should be escaped as
!!/blacklist-website example\.com). Regexes on this list do not have
\badded to the start and end of the regex.
!!/watch <regex>- Adds a regular expression pattern to the watchlist which is similar to the list of bad keywords (see
!!/blacklist-keywordabove), but with less strict criteria for what you can list. The intent is that you can set up SmokeDetector to watch for something and be alerted when it actually happens. Typical phrases to watch include domain names and phrases which occur in spam, but which have not been seen by metasmoke enough to actually blacklist (yet) or which don’t meet the high spam-detection-accuracy criteria required of blacklisted items. The long version of this command is
!!/watch-keyword <regex>. Prior to being used by SmokeDetector to test posts, all regexes on this list automatically have
\badded to the start and end of the regex.
!!/watch-number <number text>- Adds a number to the watched number list. The text may contain non-number characters and is tested verbatim against potential spam. In addition, it’s tested “normalized”, which is with both the watched number text and the post reduced to numbers.
!!/unwatch <number text>- Removes a previously-added regular expression from the watchlist and/or a number from the number watchlist. Only code admins can use this command; it will only accept an exact match to a regular expression in the watchlist and/or an exact match to a number in the number watchlist.
!!/unblacklist <number text>- Similar to
unwatch, removes a previously-added regular expression from the blacklists and/or a number from the number blacklist. Only code admins can use this command. It will only accept an exact match to a regular expression in the blacklists and/or an exact match to a number in the number blacklist.
!!/approve <PR number>- Only code admins can use this command. It allows you to approve pull requests automatically created for watches/blacklists by non-code admin users without leaving the chat.
!!/bisect <text>- Test the text against all of the blacklist and watchlist entries and report which entries match.
These commands require privileges and have to be posted as a reply to a message of SmokeDetector.
offensivefor posts that should be flagged as such (equivalent to
tpu-; see below)
vandalismfor posts that have been vandalised and the vandalism edit should be rolled back (equivalent to
notspamif the post should not be flagged (equivalent to
true— Marks a reported post as true positive.
trueu— Marks a reported post as true positive and adds the poster to the blacklist.
false— Marks a reported post as false positive. Additionally removes the user from the blacklist, if that was the reason that the post was reported.
falseu— Marks a reported post as false positive and adds the poster to the whitelist.
naa— If the reported post is an answer, this command records it as NAA (Not an answer) in metasmoke.
ignore— Makes SmokeDetector ignore a reported post.
gone— Deletes a message of SmokeDetector. This has been disabled in CHQ for reports due to the reasons listed below. But if you really need to delete a report, use
postgone— Edits out the post link of a SmokeDetector report. If in CHQ, this should be used sparingly.
If you don’t want SmokeDetector to reply when executing a command add a
- sign at the end, for example,
fp-. This is a good practice to cut down on chatroom clutter. Note that SmokeDetector will always report any errors, even if the
- is present. The hyphen can be placed after the command itself or after its parameter. The following commands support silent mode: replying to spam reports, managing black- and white-list, and managing chat notifications.
Also, some frequently used commands have one-letter aliases or convenient words that can be used instead:
Messages by SmokeDetector can be deleted within 2 minutes after they were posted by using the
gone commands. After 2 minutes are up, SmokeDetector cannot delete its own messages in response to those commands, so any deletion after that window must be done by a moderator.
Messages will also be deleted in Tavern on the Meta and SO Close Vote Reviewers, or Raiders of the Lost Downboat if the relevant post is deleted or marked as false positive before the 2-minute window is up.
Please note that the usage of deletion commands is discouraged in Charcoal HQ. Generally, messages in CHQ are kept as a record of all reported posts for multiple reasons:
delete-force command can be used if a report really needs to be deleted in Charcoal HQ.
You can now use a shortcut to post a reply to one, two or three messages at the same time, in this shape:
sd cmd1 sd cmd1 cmd2 sd cmd1 cmd2 cmd3 sd cmd1 cmd2 cmd3 cmd4 sd cmd1 cmd2 cmd3 cmd4 cmd5
cmd1 will be invoked in the most recent message, cmd2 on the message before that and cmd3 on the message before that, and so on.
It’s also possible to skip a message. Replace a command with a
- to skip a
message. For example,
sd - delete skips the most recent message and
deletes the message before that one.
Smokey will reply to your shortcut command unless all commands have quiet mode (like tp-) or just don’t reply by default (like delete).
A few examples:
sd - deletekeeps the most recent message and deletes the one before that.
sd tp fp deletemarks the most recent message as tp, the one before that as fp, and deletes the one before that.
You can also put a digit in front of a command so that the command will apply as many times as the digit. A few examples:
sd tpu tpu
sd 2tpu 3fpu=
sd tpu tpu fpu fpu fpu
sd 2- fp=
sd - - fp