jeeves

Combined-features IRC bot. Brings together DJ queue management, duck hunting, recipes, news and weather, quote bank, image rendering, and keyword responses in a single bot with a shared runtime-configurable settings store.

Dependencies

- Sopel IRC framework - Pillow (pip install Pillow) - only needed for !draw; all other features work without it

Commands

DJ (anyone / op for controls)

CommandDescription
!dj <url>Queue a YouTube URL (shorts, embeds, live not accepted)
!npShow currently playing track
!queueList up to 4 upcoming tracks
!loopShow loop state
!playStart or resume playback (op)
!stopPause playback (op)
!skipSkip to next track (op)
!removeRemove current track from queue (op)
`!loop <on\off>`Toggle queue looping (op)
!clearClear queue and stop playback (op)

Duck hunting (anyone in channel / op for control)

CommandDescription
!bangFire at the current duck
!reloadRefill ammo (3-second cooldown)
!scoreTop 5 players for this channel
!score clearClear scores for this channel (op/owner)
!huntShow hunt state (includes current spawn/flee times)
!hunt startStart the hunt (op/owner)
!hunt stopStop the hunt (op/owner)
!hunt idle <N>Set empty-round auto-stop threshold (0 = never) (op/owner)

Recipes (anyone in channel)

CommandDescription
!breakfast [list]Random breakfast suggestion, or list all
!lunch [list]Random lunch suggestion, or list all
!dinner [list]Random dinner suggestion, or list all
!snack [list]Random snack suggestion, or list all
!recipe <name>Full recipe: name, ingredients, steps

News and weather (anyone)

CommandDescription
!weather <city>Current weather conditions
!forecast <city>3-day weather forecast
`!headlines [global\mena\egypt] [count]`Latest RSS headlines
!newsShow auto-broadcast state
`!news on\off`Enable/disable auto-broadcast (op/owner)

Quotes (anyone / op for management)

CommandDescription
!quotePost a random quote
!quote add <text>Add a quote (op/owner)
!quote del <N>Delete quote by index (op/owner)
!quote listShow total quote count
!quotesShow auto-post state
`!quotes on\off`Enable/disable auto-posting (op/owner)

Art (anyone in channel)

CommandDescription
!draw [<lines>] <url>Render image as mIRC colour art (lines 4-12)

Config (owner / op)

CommandDescription
!set <key> <value>Set a config value (in channel: per-channel; in PM: global, owner only)
!config [#channel]Show all config values for a channel

Admin (owner)

CommandDescription
!join #channelJoin a channel
!part [#channel]Leave a channel
!chansList joined channels
!pausePause keyword responses
!resumeResume keyword responses

Help

CommandDescription
!helpTopics overview
!help <topic>Commands in that topic
!help <cmd>Command description

Runtime config keys

All keys are set via !set <key> <value>. Per-channel keys can be set in a channel (affecting that channel only) or in PM (setting the global default). Global-only keys must be set in PM by the owner.

KeyDefaultScopeDescription
dj_track_duration120globalSeconds per track before auto-advance
dj_queue_cap50globalMax tracks in queue
art_height6globalDefault lines for !draw (4-12)
duck_spawn_min60per-channelMin seconds between duck spawns
duck_spawn_max300per-channelMax seconds between duck spawns
duck_flee_time45per-channelSeconds before duck flees
duck_idle_rounds3per-channelEmpty rounds before auto-stop (0=off)
news_interval90per-channelMinutes between news broadcasts
news_count1per-channelHeadlines per broadcast cycle
quotes_interval60per-channelMinutes between quote auto-posts

Config file keys

KeyDescription
[jeeves] db_pathPath to main JSON database
[jeeves] duck_db_pathPath to duck scores SQLite database
[jeeves] recipes_pathPath to recipes JSON file
[respond] keywordsNewline-separated trigger words for keyword responses
[respond] responsesNewline-separated response lines (random choice)