Skip to Content
Haven Documentation is the shared home for product guides, plugin setup, and release docs.
PluginsRandom GamesConfiguration

Configuration

Random Games is configured through randomgames. In normal Athena installs, use the dashboard when dashboard-backed config storage is enabled.

Core Settings

OptionTypeDescription
embedColorstringDefault hex color used by game list and plugin embeds.
tmdbApiKeystringTMDB API key used by movie-related game data.
fontstringFont used by generated game images. Supported defaults include Arial, AlfaSlabOne, Inter, and Roboto.

Commands

OptionTypeDescription
commands.prefixstringPrefix for message commands. Default examples use !, so members type !game.
commands.gameCommandRolestringOptional Discord role ID required to use !game. Leave empty to allow everyone.
commands.slash.game.namestringSlash command name. Usually game.
commands.slash.game.descriptionstringSlash command description shown by Discord.
commands.slash.game.permissionLevelstringAthena permission level for /game, such as everyone, staff, or admin.

Game Aliases

aliases maps short command words to game class names.

AliasGame
rpsRockPaperScissors
triviaTrivia
riddlesRiddles
unscrambleUnscramble
typeTyperacer
songGuessTheSong
pokemonWhosThatPokemon
celebGuessTheCeleb
movieGuessTheMovie
mathQuickMath
oddoneOddOneOut
countryGuessTheCountry
capitalCapitalGuesser
gapGapFill
emojiEmojiGuesser
numberGuessTheNumber
romanRomanNumeralConversion
guesspokemonGuessThePokemon
landmarkGuessTheLandmark
comicGuessTheComicCharacter
memoryMemoryMatch
hotHeadsOrTails
logoGuessTheLogo
cornersCorners

Automatic Game Triggers

OptionTypeDescription
randomGames.channelIdstringText channel where automatic games run.
randomGames.triggers.timeIntervalnumberTime interval, in seconds, used by the auto-start timer.
randomGames.triggers.messageCountnumberNumber of messages required before a game can auto-start.
randomGames.triggers.cooldownnumberCooldown, in seconds, between automatic games.
randomGames.triggers.requireBothbooleanWhen true, both the interval and message count must be satisfied. When false, either trigger can start a game.

Countdown

OptionTypeDescription
countdown.durationnumberSeconds shown before a game starts.

Game Data

OptionTypeDescription
gameData.GuessTheComicCharacter.choicesPerRoundnumberNumber of choices shown in each comic-character round.
gameData.GuessTheComicCharacter.characterPoolFilestringJSON5 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 20

Rewards

OptionTypeDescription
rewards.typestringReward mode: both, coins, or xp.
rewards.coinsDestinationstringEconomy destination for coins: balance or bank.
rewards.XP_Ranges.Small/Medium/LargeobjectMinimum and maximum XP values per reward size.
rewards.Coins_Ranges.Small/Medium/LargeobjectMinimum and maximum coin values per reward size.
rewards.Default.ProbabilitiesobjectReward-size probability weights for normal winners.
rewards.Place1.ProbabilitiesobjectReward-size probability weights for first place.
rewards.Place2.ProbabilitiesobjectReward-size probability weights for second place.
rewards.Place3.ProbabilitiesobjectReward-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

OptionTypeDescription
leaderboards.enablebooleanEnables leaderboard tracking and update loops.
leaderboards.updateIntervalnumberSeconds between leaderboard card updates.
leaderboards.channelstringChannel where leaderboard output is sent.
leaderboards.timezonestringIANA timezone used for reset schedules, such as America/Chicago.

Leaderboard Testing

OptionTypeDescription
leaderboards.testing.enablebooleanEnables a startup reset test. Use only while validating.
leaderboards.testing.resetAfterStartupSecondsnumberSeconds after startup before the test reset runs.

Reset Times

OptionTypeDescription
leaderboards.resetTimes.daily.hournumberDaily reset hour in the configured timezone.
leaderboards.resetTimes.daily.minutenumberDaily reset minute.
leaderboards.resetTimes.weekly.daynumberWeekly reset day, where 0 is Sunday.
leaderboards.resetTimes.weekly.hournumberWeekly reset hour.
leaderboards.resetTimes.weekly.minutenumberWeekly reset minute.
leaderboards.resetTimes.monthly.hournumberMonthly reset hour on the first day of the month.
leaderboards.resetTimes.monthly.minutenumberMonthly reset minute.

MVP Roles

OptionTypeDescription
leaderboards.MVP.daily.enablebooleanAssigns a daily MVP role after daily reset.
leaderboards.MVP.daily.roleIdstringRole ID for daily MVP.
leaderboards.MVP.weekly.enablebooleanAssigns a weekly MVP role after weekly reset.
leaderboards.MVP.weekly.roleIdstringRole ID for weekly MVP.
leaderboards.MVP.monthly.enablebooleanAssigns a monthly MVP role after monthly reset.
leaderboards.MVP.monthly.roleIdstringRole ID for monthly MVP.

Announcements

Each leaderboard period has an announcement block:

OptionTypeDescription
enablebooleanSends a winner announcement when that period resets.
channelstringAnnouncement channel ID.
displayTypestringembed or message.
embedTitlestringEmbed title when using embed.
embedDescriptionstringEmbed body. Supports {topPlayers}, {winner}, and {wins}.
messageFormatstringPlain-message body when using message.
colorstringAnnouncement embed color.

Leaderboard Embed

OptionTypeDescription
leaderboards.embed.titlestringLeaderboard title.
leaderboards.embed.topUserFormatstringRow format. Supports {placement}, {username}, and {wins}.
leaderboards.embed.emptyTextstringText shown when no wins exist.
leaderboards.embed.timestampbooleanAdds a Discord timestamp to the leaderboard embed.
leaderboards.embed.colorstringEmbed color.
leaderboards.embed.thumbnailstringThumbnail URL.
leaderboards.embed.placementsstring[]Labels used for placements 1 through 10.
leaderboards.embed.resetFormatstringReset line. Supports {timestamp}.
leaderboards.embed.footerstringFooter text.
leaderboards.embed.bottomImagestringBottom image path under the plugin assets folder.

Debug Logging

OptionTypeDescription
debug.EnabledbooleanMaster debug switch.
debug.LogConfigurationbooleanLogs loaded config details.
debug.LogTriggersbooleanLogs trigger checks.
debug.LogGameStartbooleanLogs game-start events.
debug.LogGameEndbooleanLogs game-end events.
debug.LogRewardsbooleanLogs reward rolls.
debug.LogLeaderboardbooleanLogs leaderboard updates and resets.