Configuration
Random Games is configured through randomgames. In normal Athena installs,
use the dashboard when dashboard-backed config storage is enabled.
Core Settings
| Option | Type | Description |
|---|---|---|
embedColor | string | Default hex color used by game list and plugin embeds. |
tmdbApiKey | string | TMDB API key used by movie-related game data. |
font | string | Font used by generated game images. Supported defaults include Arial, AlfaSlabOne, Inter, and Roboto. |
Commands
| Option | Type | Description |
|---|---|---|
commands.prefix | string | Prefix for message commands. Default examples use !, so members type !game. |
commands.gameCommandRole | string | Optional Discord role ID required to use !game. Leave empty to allow everyone. |
commands.slash.game.name | string | Slash command name. Usually game. |
commands.slash.game.description | string | Slash command description shown by Discord. |
commands.slash.game.permissionLevel | string | Athena permission level for /game, such as everyone, staff, or admin. |
Game Aliases
aliases maps short command words to game class names.
| Alias | Game |
|---|---|
rps | RockPaperScissors |
trivia | Trivia |
riddles | Riddles |
unscramble | Unscramble |
type | Typeracer |
song | GuessTheSong |
pokemon | WhosThatPokemon |
celeb | GuessTheCeleb |
movie | GuessTheMovie |
math | QuickMath |
oddone | OddOneOut |
country | GuessTheCountry |
capital | CapitalGuesser |
gap | GapFill |
emoji | EmojiGuesser |
number | GuessTheNumber |
roman | RomanNumeralConversion |
guesspokemon | GuessThePokemon |
landmark | GuessTheLandmark |
comic | GuessTheComicCharacter |
memory | MemoryMatch |
hot | HeadsOrTails |
logo | GuessTheLogo |
corners | Corners |
Automatic Game Triggers
| Option | Type | Description |
|---|---|---|
randomGames.channelId | string | Text channel where automatic games run. |
randomGames.triggers.timeInterval | number | Time interval, in seconds, used by the auto-start timer. |
randomGames.triggers.messageCount | number | Number of messages required before a game can auto-start. |
randomGames.triggers.cooldown | number | Cooldown, in seconds, between automatic games. |
randomGames.triggers.requireBoth | boolean | When true, both the interval and message count must be satisfied. When false, either trigger can start a game. |
Countdown
| Option | Type | Description |
|---|---|---|
countdown.duration | number | Seconds shown before a game starts. |
Game Data
| Option | Type | Description |
|---|---|---|
gameData.GuessTheComicCharacter.choicesPerRound | number | Number of choices shown in each comic-character round. |
gameData.GuessTheComicCharacter.characterPoolFile | string | JSON5 file containing the comic character pool. |
Game Durations
gameDurations controls how long each round stays open. Default is used when
a game does not have its own entry.
gameDurations: {
Default: 15,
Trivia: 15,
GuessThePokemon: 10,
GuessTheLogo: 10
}Members can override a duration for a single manual round by adding seconds:
!game trivia 20Rewards
| Option | Type | Description |
|---|---|---|
rewards.type | string | Reward mode: both, coins, or xp. |
rewards.coinsDestination | string | Economy destination for coins: balance or bank. |
rewards.XP_Ranges.Small/Medium/Large | object | Minimum and maximum XP values per reward size. |
rewards.Coins_Ranges.Small/Medium/Large | object | Minimum and maximum coin values per reward size. |
rewards.Default.Probabilities | object | Reward-size probability weights for normal winners. |
rewards.Place1.Probabilities | object | Reward-size probability weights for first place. |
rewards.Place2.Probabilities | object | Reward-size probability weights for second place. |
rewards.Place3.Probabilities | object | Reward-size probability weights for third place. |
Probability values are weights, not percentages that must add to exactly 100. Keeping them near 100 makes the config easier to read.
Leaderboards
| Option | Type | Description |
|---|---|---|
leaderboards.enable | boolean | Enables leaderboard tracking and update loops. |
leaderboards.updateInterval | number | Seconds between leaderboard card updates. |
leaderboards.channel | string | Channel where leaderboard output is sent. |
leaderboards.timezone | string | IANA timezone used for reset schedules, such as America/Chicago. |
Leaderboard Testing
| Option | Type | Description |
|---|---|---|
leaderboards.testing.enable | boolean | Enables a startup reset test. Use only while validating. |
leaderboards.testing.resetAfterStartupSeconds | number | Seconds after startup before the test reset runs. |
Reset Times
| Option | Type | Description |
|---|---|---|
leaderboards.resetTimes.daily.hour | number | Daily reset hour in the configured timezone. |
leaderboards.resetTimes.daily.minute | number | Daily reset minute. |
leaderboards.resetTimes.weekly.day | number | Weekly reset day, where 0 is Sunday. |
leaderboards.resetTimes.weekly.hour | number | Weekly reset hour. |
leaderboards.resetTimes.weekly.minute | number | Weekly reset minute. |
leaderboards.resetTimes.monthly.hour | number | Monthly reset hour on the first day of the month. |
leaderboards.resetTimes.monthly.minute | number | Monthly reset minute. |
MVP Roles
| Option | Type | Description |
|---|---|---|
leaderboards.MVP.daily.enable | boolean | Assigns a daily MVP role after daily reset. |
leaderboards.MVP.daily.roleId | string | Role ID for daily MVP. |
leaderboards.MVP.weekly.enable | boolean | Assigns a weekly MVP role after weekly reset. |
leaderboards.MVP.weekly.roleId | string | Role ID for weekly MVP. |
leaderboards.MVP.monthly.enable | boolean | Assigns a monthly MVP role after monthly reset. |
leaderboards.MVP.monthly.roleId | string | Role ID for monthly MVP. |
Announcements
Each leaderboard period has an announcement block:
| Option | Type | Description |
|---|---|---|
enable | boolean | Sends a winner announcement when that period resets. |
channel | string | Announcement channel ID. |
displayType | string | embed or message. |
embedTitle | string | Embed title when using embed. |
embedDescription | string | Embed body. Supports {topPlayers}, {winner}, and {wins}. |
messageFormat | string | Plain-message body when using message. |
color | string | Announcement embed color. |
Leaderboard Embed
| Option | Type | Description |
|---|---|---|
leaderboards.embed.title | string | Leaderboard title. |
leaderboards.embed.topUserFormat | string | Row format. Supports {placement}, {username}, and {wins}. |
leaderboards.embed.emptyText | string | Text shown when no wins exist. |
leaderboards.embed.timestamp | boolean | Adds a Discord timestamp to the leaderboard embed. |
leaderboards.embed.color | string | Embed color. |
leaderboards.embed.thumbnail | string | Thumbnail URL. |
leaderboards.embed.placements | string[] | Labels used for placements 1 through 10. |
leaderboards.embed.resetFormat | string | Reset line. Supports {timestamp}. |
leaderboards.embed.footer | string | Footer text. |
leaderboards.embed.bottomImage | string | Bottom image path under the plugin assets folder. |
Debug Logging
| Option | Type | Description |
|---|---|---|
debug.Enabled | boolean | Master debug switch. |
debug.LogConfiguration | boolean | Logs loaded config details. |
debug.LogTriggers | boolean | Logs trigger checks. |
debug.LogGameStart | boolean | Logs game-start events. |
debug.LogGameEnd | boolean | Logs game-end events. |
debug.LogRewards | boolean | Logs reward rolls. |
debug.LogLeaderboard | boolean | Logs leaderboard updates and resets. |