created_at2023-04-02 16:34:15.193352
updated_at2023-04-10 22:47:01.131213
descriptionTara is a modern, free, open-source, self-hostable Discord bot.
Decator (El-Wumbus)




crates.io github-release github-license

Tara is a modern, free, open-source, self-hostable Discord bot.

Tara works on Linux and macOS.



Tara can be installed in 2 simple steps:

  1. Install executable

If your desired platform isn't seen below, please open an issue.


The recommended way to install Tara is by way of a package manager. If using cargo install, some dependencies won't automatically be installed. You'll need to install sqlite3 previous to running the instructions. On Debian and Ubuntu systems the required package is libsqlite3-dev, on Arch and related systems it's sqlite.

Distribution Repository Instructions
Any crates.io cargo install tara --locked

The recommended way to install Tara is by way of a package manager.

Repository Instructions
crates.io cargo install tara --locked
  1. Configure

Before the bot can be started successfully, it needs to be configured. Tara has an interactive setup subcommand, tara config init.

$ tara config init --help
tara-config-init 0.2.0
Create configuration files with a user-provided configuration

    tara config init

    -h, --help    Prints help information

tara config init will create a configuration file in the appropriate location. If this needs to be modified it can be. The file's content's should be the same regardless of operating system, but the location in the file system will be different.


Tara looks for a configuration file in this order:

  1. $XDG_CONFIG_HOME/Tara/tara.toml or $HOME/.config/Tara/tara.toml
  2. /etc/tara.d/tara.toml

Tara's configuration file is located here: $HOME/Library/Application Support/com.github.El-Wumbus.Tara/tara.toml

The configuration file should look similarly to below:

randomErrorMessage = false

# Discord bot token
token = "<DISCORD_TOKEN>"

# API key from currencyapi.com.
currencyApiKey = "<CURRENCYAPI.COM>" # Optional

All accepted keys:

  • randomErrorMessage - This key allows for error messages to be selected randomly from a set loaded from a JSON document. If setting this key to true, it will look in the default locations for a error_messages.json file. If enabled and the file cannot be parsed (because it doesn't exist or is invalid), Tara will continue with the default error messages. Another choice is to set this to the path of the error messages file. A value of false will use a singular, static error message.

    The default location for the error messages file is system dependant.


    Tara will look in these locations for an existing file.

    1. $XDG_CONFIG_HOME/Tara/error_messages.json or $HOME/.config/Tara/error_messages.json
    2. /etc/tara.d/error_messages.json

    Tara will look here for an existing file: $HOME/Library/Application Support/com.github.El-Wumbus.Tara/error_messages.json

  • direct_message_cooldown - This optional key is to set the minimum duration, in seconds, to allow between running commands in a direct message. The default is 3.

  • secrets.token - The discord token can be aquired according to Building your first Discord app.

  • secrets.currencyApiKey - The currencyApiKey is an optional key to enable the currency conversion feature. This can be aquired from currencyapi.com. The feature will, at most, refresh every six hours. This means the feature will never need a paid API key.



To start Tara, use the tara daemon command. If no errors or warnings occur, Tara's stdout and stderr will be blank. If Tara has a proper Discord token, then it's ready to use.

$ tara daemon --help
tara-daemon 0.2.0
Start Tara

    tara daemon [OPTIONS]

    -h, --help    Prints help information

        --config <config>    Specify a configuration file to use instead of the default

Discord Commands

Name Description Usable in DMs Permissions
define Defines an English word Yes NONE
wiki Searches for a wikipedia page and returns a summary Yes NONE
random coin Flips a coin Yes NONE
random cat Gives a random cat photo Yes NONE
random dog Gives a random dog photo Yes NONE
random quote Gives a random quote Yes NONE
random number Generates a random number between optional low and high bounds (inclusive) Yes NONE
search duckduckgo Search DuckDuckGo for a search term. Results are censored. Yes NONE
conversions temperature Convert one temperature unit to another. Supports celsius, kelvin, and fahrenheit Yes NONE
conversions currency Convert from one currency to another. Only enabled when secrets.currencyApiKey is set. Yes NONE
settings set * Set settings for the current guild No MANAGE_GUILD
settings view * See current guild settings No MANAGE_GUILD
role add Give yourself a self-assignable role No NONE
role remove Remove a self-assignable role No NONE
role list List all self-assignable roles No NONE
Commit count: 101

cargo fmt