Miscellaneous Module

A collection of miscellaneous commands that don't belong to a module. Review the help information on each command for more details.



Maximum number of search results that can be requested at once.


!lastseen <@user>

Returns when a user was last seen on discord, which is usually their last status change.


Either a ping for the user, their username, or their nickname.
!search [*[result-range]] [@user[|@user2|...]] [#channel[|#channel2|...]] [~timestamp] [message]

This is an arbitrary search command run on the 7 day chat log. All parameters are optional and can be input in any order, and will all be combined into a single search as appropriate, but if no searchable parameters are given, the operation will fail. Remember that if a username has spaces in it, you have to put the entire username parameter in quotes, not just the username itself!

Example: !search #manechat @cloud|@Potluck *4 "~Sep 8 12:00pm" This will return the most recent 4 messages said by any user with "cloud" in the name, or the user Potluck, in the #manechat channel, before Sept 8 12:00pm.


(optional) Specifies what results should be returned. Specifying '*10' will return the first 10 results, while '*5-10' will return the 5th to the 10th result (inclusive). If you ONLY specify a single * character, it will only return a count of the total number of results.


(optional) Specifies a target user name to search for. An actual ping will be more effective, as it can directly use the user ID, but a raw username will be searched for in the alias table. Multiple users can be searched for by separating them with |, but each user must still be prefixed with @ even if it's not a ping


(optional) Must be an actual channel recognized by discord, which means it should be an actual ping in the format #channel, which will filter results to that channel. Multiple channels can be specified using |, the same way users can.


(optional) Tells the search to only return messages that appeared before the given timestamp. This parameter MUST BE IN QUOTES or it will not be parsed correctly.


(optional) Will be constructed from all the remaining unrecognized parameters, so you don't need quotes around the message you're looking for.


!roll <expression>

Evaluates an arbitrary mathematical expression, replacing all NdX values with the sum of n random numbers from 1 to X, inclusive. For example, !roll d10 will return 1-10, whereas !roll 2d10 + 2 will return a number between 4 and 22.


The mathematical expression to parse.


!showroll <expression>

Evaluates a dice roll expression, returning the individual die results. Can also optionally report hit counting for success and fail thresholds. Acceptable expressions are defined as [N]dX[tY][fZ][hW] where: N: number of dice to roll (postive integer < 250; optional, defaults to 1) dX: the type of dice to roll, where X is the number of sides (required) tY: the threshold to use for hit counting, (Y is a positive integer; optional) fZ: the fail threshold to use for hit counting, (Z is a positive integer; optional) hW: Only shows the highest W dice, (W is a positive integer; optional) Examples: d6: Rolls a single 6-sided die 4d20: Rolls 4 20-sided dice 12d6t5: Rolls 12 6-sided dice, and counts the number that score 5 or higher 17d10t8f2: Rolls 17 10-sided dice, counts number that roll 8 or higher (successes) and 2 or lower (fails) 12d6h5: Rolls 12 6-sided dice, and only shows the highest 5 results


The dice expression to parse (e.g. 12d6t5f1).


!snowflaketime <ID>

Given a discord snowflake ID, returns when that ID was created.


Any unique ID used by discord (these are called snowflake IDs)


!poll [message]

Analyzes an emoji reaction poll and displays the results as a graph. If anyone voted more than once, also displays who voted the most (does not work for messages with more than 100 votes on a single emoji reaction).


(optional) Message ID of the message to analyze. If omitted, searches the current channel for the last message with an emoji reaction and analyzes that.