Using Bots
Matrix Bots and Commands
A guide to the available bots and commands in our Matrix server.
You may already be familiar with the chat bot functionality of the Matrix Bots, but @fail.bot:grey.fail also offers a range of commands.
🛠️ General Commands
!help
Displays a list of available bot commands.
!echo
Echoes your message back to you.
Example:
!echo Hello, World!
Hello, World!
!ping [message]
Pings the bot. If you include a message, it replies with it.
Example:
!ping
Pong! (ping took 80 ms to arrive)
🌟 Karma Bot
!karma
Manage user karma points through voting and viewing statistics. This is largely a passive bot; users react to posts using 👍 or 👎.
Subcommands:
up <Event ID>
— Upvote a message/event.down <Event ID>
— Downvote a message/event.stats
— View global karma stats.view [user ID]
— View your or another user's karma.export
— Export your karma data.breakdown
— View your karma breakdown.top
— See the top-rated users.bottom
— See the lowest-rated users.best
— View the highest-rated messages.worst
— View the lowest-rated messages.
Example:
!karma up $eventid12345
!karma top
Highest karma
chris: +23 (+34/-11)
erik: +23 (+34/-11)
chriz: +15 (+15/-0)
tapekebab: +11 (+13/-2)
colin: +10 (+11/-1)
lauren: +8 (+8/-0)
allie: +6 (+6/-0)
nate: +6 (+6/-0)
rick: +6 (+12/-6)
jillian: +5 (+5/-0)
🌎 Translation Bot
!translate [language code] [text]
Translate text into another language. Translates words using Google Translate (DeepL is planned too).
The first parameter (source language) can be set to auto
or omitted entirely to let Google Translate detect the source language. Additionally, you can reply to a message with !tr <from> <to>
(no text) to translate the message you replied to.
Example:
!translate es Hello, how are you?
¿Hola, cómo estás?
⏰ Reminder Bot
!remind
Set reminders, manage schedules, and customize timezones.
Use !remind <date> <message>
to set a reminder. To subscribe to a reminder set by someone else, upvote the message with a 👍 reaction. To cancel a reminder, remove the message or reaction. After the reminder fires, you can re-schedule it with !reminder again <date>
.
<date>
can be a time delta (e.g. 2 days 1.5 hours
or friday at 15:00
) or an absolute date (e.g. 2020-03-27 15:00
).
Note that subscribing to and cancelling reminders is only possible before the last minute. Each minute reminders that are scheduled to go off during that minute are sent to the event loop, at which point their target user list can no longer be updated.
To set the timezone for date parsing and output for your messages, use !remind tz <timezone>
. It's recommended to use a TZ database name, but anything supported by Pytz will work.
Similarly, you can set the locale for date parsing with !remind locale <list of locales>
. If you provide multiple locales, each one will be tried for parsing your input until one matches. Unlike the timezone, the locale only affects input, not output. You can view available locales using !remind locales
. You can also contribute new locales by making a pull request (see locales.py, content warning: long regexes).
To list your upcoming reminders, use !remind list
Subcommands:
!remind <date> [message]
— Create a reminder.reschedule <date>
— Reschedule an existing reminder.list [all]
— List your active or all reminders.locales
— View available locales.locale [locale]
— Set your preferred locale.timezone [timezone]
— Set your timezone.
Example:
!remind 10 seconds wash socks!
I'll remind you to wash socks! in 10 seconds.
(others can 👍 this message to get pinged too)
chris: Wash socks!
🌙 Moon Phase Bot
!moon
Get the current moon phase for today.
Example:
!moon
🌑 New Moon (1% Illuminated)
☁️ Weather Bot
!weather
Get the current weather for any location.
Example:
!weather Tokyo
Tokyo: ☁️ +19°C (wttr.in)
Tip: Use !weather help
for usage instructions.
🎲 Choice & Dice Bots
!choose <chooseText>
Randomly selects between your provided choices.
Example:
!choose pizza | sushi | tacos
tacos
!roll [pattern]
Roll dice with optional patterns.
The base command is !roll
. To roll dice, pass XdY
as an argument, where X
is the number of dice (optional) and Y
is the number of sides in each dice. Most Python math and bitwise operators and basic math
module functions are also supported, which means you can roll different kinds of dice and combine the results however you like.
Example:
!roll 3d20
27
😊 Reacji Bot
!reacji
Set up emoji-to-room mappings.
When a user reacts with🎖️, the message is automatically cross-posted to #hall-of-fame.
Subcommands:
help
— Show usage.list [emojus]
— List emoji mappings.map <mapping>
— Define emoji-to-room mappings.delete <mapping>
— Remove a mapping.
Example:
!reacji list
🎖️ to hall-of-fame
🧠 Urban Dictionary Bot
!ud [term]
Search Urban Dictionary for slang terms or memes.
Example:
!ud yeet
yeet [1]: A word one may scream while [propelling] an object through the air at [alarming] speeds, [heights], and etc. (link)
📰 RSS Bot
!rss
Manage RSS feed subscriptions in rooms.
Subcommands:
subscribe <feed URL>
— Subscribe the room to a feed.unsubscribe <feed ID>
— Unsubscribe from a feed.template <feed ID> <new template>
— Change the notification template.notice <feed ID> [true/false]
— Toggle notice sending.subscriptions
— List the subscriptions.
💰 Crypto Price Bot
!coin <exch_pair>
Fetch real-time cryptocurrency prices.
Example:
!coin btc/usd
Current exchange rate for BTC/USD: 93913.5970275634
📈 Stock Price Bot
!stock
Fetch current stock price data.
Example:
!stock F
Current data for Ford Motor Company (F):
Price: $10.04, ▼-0.10% from market open @ $10.045
52 Week High: $14.85
52 Week Low: $8.44
ℹ️ Additional Notes
- Most commands are not case-sensitive.
- You can add
help
after many commands for detailed usage (!remind help
,!karma help
, etc.). - Some bots behave slightly differently between private DMs and public rooms.