Advanced Creds

Setting up your API keys

This part is completely optional, however it’s necessary for music and a few other features to work properly.

  • GoogleAPIKey
    • Required for Youtube Song Search, Playlist queuing, and a few more things.
    • Follow these steps on how to setup Google API keys:
      • Go to Google Console and log in.
      • Create a new project (name does not matter).
      • Once the project is created, go into Library
      • Under the YouTube APIs section
        • Select YouTube Data API v3,
        • Click enable.
      • Search for Custom Search API
        • Select Custom Search API,
        • Click enable.
      • Open up the Navigation menu on the top right with the three lines.
      • select APIs & Services, then select Credentials,
        • Click Create Credentials button,
        • Click on API Key
        • A new window will appear with your Google API key NOTE: You don’t really need to click on RESTRICT KEY, just click on CLOSE when you are done.
        • Copy the key.
      • Open up creds.yml and look for GoogleAPIKey, paste your API key after the :.
      • It should look like this:
      GoogleApiKey: 'AIzaSyDSci1sdlWQOWNVj1vlXxxxxxbk0oWMEzM'
  • MashapeKey
    • Required for Hearthstone cards.
    • Api key obtained on https://rapidapi.com (register -> go to MyApps -> Add New App -> Enter Name -> Application key)
    • Copy the key and paste it into creds.yml
  • OsuApiKey
    • Required for Osu commands
    • You can get this key here.
  • CleverbotApiKey
    • Required if you want to use Cleverbot. It’s currently a paid service.
    • You can get this key here.
  • PatreonAccessToken
    • For Patreon creators only.
  • PatreonCampaignId
    • For Patreon creators only. Id of your campaign.
  • TwitchClientId and TwitchClientSecret
    • Mandatory for following twitch streams with .twitch (or .stadd with twitch link)
    • Go to apps page on twitch and register your application.
    • You need 2FA enabled on twitch in order to create an application
    • You can set http://localhost as the OAuth Redirect URL (and press Add button)
    • Select Chat Bot from the Category dropdown
    • Once created, click Manage
    • Click New Secret and select OK in the popup Note: You will need to generate a new Client Secret everytime you exit the page
    • Copy both to your creds.yml as shown below
        twitchClientId: 516tr61tr1qweqwe86trg3g
        twitchClientSecret: 16tr61tr1q86tweqwe
  • LocationIqApiKey
    • Optional. Used only for the .time command. https://locationiq.com api key (register and you will receive the token in the email).
  • TimezoneDbApiKey
    • Optional. Used only for the .time command. https://timezonedb.com api key (register and you will receive the token in the email YOU HAVE TO ACTIVEATE IT AFTER YOU GET IT).
  • CoinmarketcapApiKey
    • Optional. Used only for the .crypto command. You can use crypto command without it, but you might get ratelimited from time to time, as all self-hosters share the default api key. https://pro.coinmarketcap.com/
Additional Settings
  • TotalShards
    • Required if the bot will be connected to more than 2500 servers.
    • Most likely unnecessary to change until your bot is added to more than 2500 servers.
  • RedisOptions
    • Required if the Redis instance is not on localhost or on non-default port.
    • You can find all available options here.
  • RestartCommand
    • Required if you want to be able to use the .restart command
    • If you’re using the CLI installer or Linux/OSX, it’s easier and more reliable setup Ellie with auto-restart and just use .die

For Windows (Updater), add this to your creds.yml

RestartCommand:
    Cmd: "EllieBot.exe"
    args: "{0}"

For Windows (Source), Linux or OSX, add this to your creds.yml

RestartCommand:
    Cmd: dotnet
    Args: "EllieBot.dll -- {0}"

End Result

This is an example of how the creds.yml looks like with multiple owners, the restart command (optional) and some of the API keys (also optional):

# DO NOT CHANGE
version: 4
# Bot token. Do not share with anyone ever -> https://discordapp.com/developers/applications/
token: 'MTE5Nzc3MDIxMzE5NTc3NjEw.VlhNCw.BuqJFyzdIUAK1PRf1eK1Cu89Jew'
# List of Ids of the users who have bot owner permissions
# **DO NOT ADD PEOPLE YOU DON'T TRUST**
ownerIds:
    - 105635123466156544
    - 145521851676884992
    - 341420590009417729
# The number of shards that the bot will running on.
# Leave at 1 if you don't know what you're doing.
totalShards: 1
# Login to https://console.cloud.google.com, create a new project, go to APIs & Services -> Library -> YouTube Data API and enable it.
# Then, go to APIs and Services -> Credentials and click Create credentials -> API key.
# Used only for Youtube Data Api (at the moment).
googleApiKey: 'AIzaSyDScfdfdfi1sdlWQOWxxxxxbk0oWMEzM'
# Settings for voting system for discordbots. Meant for use on global Ellie.
votes:
  url: ''
  key: ''
# Patreon auto reward system settings.
# go to https://www.patreon.com/portal -> my clients -> create client
patreon:
# Access token. You have to manually update this 1st of each month by refreshing the token on https://patreon.com/portal
  accessToken: ''
  # Unused atm
  refreshToken: ''
  # Unused atm
  clientSecret: ''
  # Campaign ID of your patreon page. Go to your patreon page (make sure you're logged in) and type "prompt('Campaign ID', window.patreon.bootstrap.creator.data.id);" in the console. (ctrl + shift + i)
  campaignId: ''
# Api key for sending stats to DiscordBotList.
botListToken: ''
# Official cleverbot api key.
cleverbotApiKey: ''
# Redis connection string. Don't change if you don't know what you're doing.
redisOptions: localhost:6379,syncTimeout=30000,responseTimeout=30000,allowAdmin=true,password=
# Database options. Don't change if you don't know what you're doing. Leave null for default values
db:
# Database type. Only sqlite supported atm
  type: sqlite
  # Connection string. Will default to "Data Source=data/EllieBot.db"
  connectionString: Data Source=data/EllieBot.db
# Address and port of the coordinator endpoint. Leave empty for default.
# Change only if you've changed the coordinator address or port.
coordinatorUrl: http://localhost:3442
# Api key obtained on https://rapidapi.com (go to MyApps -> Add New App -> Enter Name -> Application key)
rapidApiKey: 4UrKpcWXcxxxxxxxxxxxxxxp1Q8kI6jsn32xxxoVWiY7
# https://locationiq.com api key (register and you will receive the token in the email).
# Used only for .time command.
locationIqApiKey:
# https://timezonedb.com api key (register and you will receive the token in the email).
# Used only for .time command
timezoneDbApiKey:
# https://pro.coinmarketcap.com/account/ api key. There is a free plan for personal use.
# Used for cryptocurrency related commands.
coinmarketcapApiKey:
# Api key used for Osu related commands. Obtain this key at https://osu.ppy.sh/p/api
osuApiKey: 4c8c8fdffdsfdsfsdfsfa33f3f3140a7d93320d6
# Optional Trovo client id.
# You should use this if Trovo stream notifications stopped working or you're getting ratelimit errors.
trovoClientId:
# Obtain by creating an application at https://dev.twitch.tv/console/apps
twitchClientId: jf2w6kkyrlzfl6mp1b4k25h4jr6b2o
# Obtain by creating an application at https://dev.twitch.tv/console/apps
twitchClientSecret: 16tr61tr1q86tweqwe
# Command and args which will be used to restart the bot.
# Only used if bot is executed directly (NOT through the coordinator)
# placeholders:
#     {0} -> shard id
#     {1} -> total shards
# Linux default
#     cmd: dotnet
#     args: "EllieBot.dll -- {0}"
# Windows default
#     cmd: "EllieBot.exe"
#     args: "{0}"
restartCommand:
  cmd:
  args:

Database

Ellie saves all settings and data in the database file EllieBot.db, located in:

  • Windows (Updater): system/data (can be easily accessed through the Data button on the updater)
  • Windows (Source), Linux and OSX: elliebot/output/data/EllieBot.db

In order to open it you will need SQLite Browser.

NOTE: You don’t have to worry if you don’t have the EllieBot.db file, it gets automatically created once you successfully run the bot for the first time.

To make changes to the database on windows:

  • Shut your bot down.
  • Copy the EllieBot.db file to someplace safe. (Back up)
  • Open it with SQLite Browser.
  • Go to the Browse Data tab.
  • Click on the Table drop-down list.
  • Choose the table you want to edit.
  • Click on the cell you want to edit.
  • Edit it on the right-hand side.
  • Click on Apply.
  • Click on Write Changes.

Sharding your bot

To run a sharded bot, you will want to run src/EllieBot.Coordinator project. Shards communicate with the coordinator using gRPC To configure your Coordinator, you will need to edit the src/EllieBot.Coordinator/coord.yml file

# total number of shards
TotalShards: 3
# How often do shards ping their state back to the coordinator
RecheckIntervalMs: 5000
# Command to run the shard
ShardStartCommand: dotnet
# Arguments to run the shard
# {0} = shard id
# {1} = total number of shards
ShardStartArgs: ../../output/EllieBot.dll -- {0} {1}
# How long does it take for the shard to be forcefully restarted once it stops reporting its state
UnresponsiveSec: 30