A discord bot written in Rust.

69928d9 update LICENSE

~phate pushed to ~phate/rsPhate git

2 years ago

15191e3 add neko command, remove rofl dependency

~phate pushed to ~phate/rsPhate git

2 years ago


license made-with-emacs lines of code


A Discord bot written in Rust.

Anything with a "*" denotes an entry in the notes section.

How to use:

  • export DISCORD_TOKEN=token (obtain your token from the bot section of the developers part of discord's website).
  • cargo run or cargo run --release from the root dir of the repo, or at least, the .env and scripts/ must be in the CWD.
  • Args are delimited with , so make sure commands are ran like this: ^command arg,arg.

#Current Commands

  • ^about: Bot will reply with pretty embed containing title and description of bot, as well as where to find the author (me).
  • ^date: Bot will reply with current date and time in this format -- 06:30 AM | Thu 21, May of 2020.
  • ^embed title,desc,<image_link>: Bot will generate an embed based on input and send it.*
  • ^help: Without args, bot will give a generalized help. Specifying a command or function will explain it.
  • ^fortune: Bot will reply with random fortune from fortune-mod-mythical-linux (repo is pinned to my profile if anyone is interested).*
  • ^git site,owner/repo: Bot will reply with full link to repo.
  • ^hmm: How much music does Phate have?
  • ^iv SEARCH: Bot will reply with an invidio link of the search query.*
  • ^noice: Bot will reply with image from his just_yes folder, image will be spoiler'd
  • ^math operation,num,num: Bot will do math for you (basic add/sub/div/mul) and reply with the result.*
  • ^meme position,text: Bot will generate a meme based on the input and send it as an image.
  • ^owo input: Bot will reply with OwO-ified input.
  • ^projects: Bot willk reply with pretty embed containing links to other projects by the author.
  • ^rng min,max: Bot will generate a random number between min and max and reply with the result.
  • ^rr: Bot will reply with a link (without a link preview) to Rick Astley's "Never Gonna Give You Up".
  • ^wipltrn: Bot will reply with pretty embed containing music info and cover art of Phate's currently playing music.*
  • ^ww {apple,steam,systemd}: Bot will reply with pretty embed explaining why the topic is bad.

#Automated functions

  • If a message contains "youtube.com", react with disappointed face and send pretty embed full of info on invidio.us.
  • If a message contains "twitter.com", do the same as with messages containing "youtube.com" except the embed pertains to nitter.net.

#Bot structure

  • .env: For environmental variables.
  • scripts/: Contains scripts to be ran for certain commands.
  • src/main.rs: The main file for the bot, it's responsible for everything except for defining the commands.
  • src/commands/* (except mod.rs): Define the commands to be used.
  • src/commands/mod.rs: For making the command files in src/commands/ public for use in src/main.rs.


  • embed: Image link is optional, it will be replaced with a 1px transparent image if not supplied, so it'll be like it's not even there. Also, don't forget to place your image link in brackets (<>) to disable the preview of them beforehand.
  • fortune: Potentially NSFW and offensive fortunes are enabled, use at your own risk.
  • math: Operation refers to multiply/divide/add/subtract. Example: ^math add,1,1 will make the bot reply with 2.
  • iv: Requires youtube-dl. Example: ^iv type o negative dead again will cause the bot to reply with an invidio link to the full album.
  • wipltrn: Requires mpc, and for the cover art to be present at /tmp/cover.png.