Skip to content

Configuration

The configuration for EnduraBot takes place in 3 files.

|──data /
|   |── misc_text.json
|   |── permissions.json
|   └── variables.json

Variables

variables.json has the meat and potatoes of relevant configuration.

Variables Description
repo The raw URL to the bot's GitHub repository. If you have forked the bot, you'd replace this with your own.
docs The raw URL to the bot's documentation. If you have forked the bot, you'd replace this with your own.
version The current version of the bot represented as a string.
quotes_channel_id The Discord channel ID of the channel containing out of context quotes.
general_chat_channel_id The Discord channel ID of the channel daily bible quotes and /trole notifications should be sent. Treated like a #general channel for the server.
invite_alert_channel_id The Discord channel ID of the channel that invitation tracking alerts should be sent too.
sysop_role_id The Discord role ID of the role denoting a member is a systems operator.
mod_role_id The Discord role ID of the role denoting a member is a server moderator.
cooldown_exempt_roles List of roles exempt from the /rquote cooldown.
links List of key value pairs where the key is a raw URL to a community resource and the value is a description of what the URL is.
ip The raw IP address to the community's infrastructure.
url The root URL for web applications and services.
rquote_cooldown_in_seconds The number of seconds that should pass before a non-exempt user can run /rquote again.
game_cooldown_in_seconds The number of seconds that should pass before a user can run /game again.
game_num_uses_before_cooldown The number of times that anyone can run /game before the cooldown triggers.
max_old_quotes Maximum number of quotes generated by /rquote or the daily bible quote to keep in memory as not being allowed to be selected again. Once met, all new invocations will have the oldest entry put back into circulation.
rquote_footer The text of the embed footer used for /rquote and the daily bible quotes.
bibleq_hour_of_day The hour of the day in UTC that the daily bible quote should be sent.
bibleq_min_of_day The minute of the bibleq_hour_of_day hour that the daily bible quote should be sent.
log_new_day_hour_utc The hour of the day in UTC that a new log-date header should be generated.1
rquote_regex Raw regex used by /rquote to determine whether a message should be selected. Any part of the message not meeting the regex criteria will be stripped before presentation.
ports A list of key value pairs where the key is the name of a service that the community's infrastructure is providing and the value is the port number to access the service.
mod_editable_roles A list of key value pairs where the key is the name of a role and the value is the role's Discord ID.2
blacklisted_itad_shops A list of key value pairs where the key is the name of a shop that sells games and the value is the ITAD internal ID for the shop.3
disabled_cmds A list of key value pairs where the key is the application name of a comand and the value is the reason the command is disabled.
rquote_themes A list of dedicated JSON objects that define the various themes /rquote uses. See: Random Quote (/rquote)

Permissions

As of v2.1 EnduraBot centralized it's permissions checking to the contents of data/permissions.json.

permissions.json
{
    "editrole": [
        1426035365671731292
    ],
    "alert": [
        3456789012345678901
    ]
}

The keys (e.g editrole) are the names of commands as defined by using the name= argument of @app_commands.command(). The value of the key, being a list, are role IDs authorized to use the command.

If a registered command does not have an entry in permissions.json EnduraBot will presume that anyone in the server may use it. Furthermore, any member on the server with the Discord Administrator permission automatically passes all permissions checks.

To find the programmatic name for a command one may search the files in the cogs folder. Unless the entire file is dedicated to one command, generally, comments precede the code that registers a command.

Lets take a look at the /about command.

user_cmds.py
# --- COMMAND: /about ---

    @app_commands.command(name="about", description="Get information about EnduraBot.")
    @app_commands.check(check_permissions)
    @app_commands.guilds(GUILD_ID)
    async def about(self, interaction: discord.Interaction):

In the above case the name for the command is about.

Miscellaneous text

Certain functions of EnduraBot rely on lists of string values in order to function properly. These are stored here.

Variables Description
bible_gospels JSON list of Bible gospels that the daily bible quote function will use as the "source" of a given quote.
daily_bible_openers JSON list of various phrases that the "preacher" who is "sending" the daily bible quote will say prior to showcasing the selected quote.
ooc_XXX List of available opening statements for the configured /rquote themes. See: Random Quote (/rquote)

  1. This is primarily used for readability; to ensure that logs are seperated by the day the logged item ocurred. These headers look like this: --- Sunday, December 07, 2025 (20251207) | 21:28 --- 

  2. The first key value pair will be the role that /trole defaults to if it's role argument is not populated. 

  3. Shop IDs can be found by reviewing EnduraBot's logs for any successful game lookup.