# daffy Duck hunting game bot. Ducks appear at random intervals; players race to shoot them. Scores are stored in SQLite. The hunt auto-stops after a configurable number of rounds with no participants. ## Dependencies No external libraries required. ## Commands ### Game (anyone in channel) | Command | Description | |---------|-------------| | `!bang` | Fire at the current duck | | `!reload` | Refill ammo (3-second cooldown) | | `!score` | Top 5 players for this channel | | `!score clear` | Clear scores for this channel (owner/op) | Owner can also use `!score clear all` or `!score clear #channel` from PM. ### Hunt control (owner / op) | Command | Description | |---------|-------------| | `!hunt` | Show hunt state (on/off/active, idle counter) | | `!hunt start` | Start the hunt | | `!hunt stop` | Stop the hunt | | `!hunt idle ` | Set empty-round auto-stop threshold (0 = never); takes effect immediately if threshold is already met | ### Admin (owner) | Command | Description | |---------|-------------| | `!join #channel` | Join a channel | | `!part [#channel]` | Leave a channel | | `!chans` | List channels | | `!help` | Show usage (PM) | ## How it works - A duck spawns every `spawn_min` to `spawn_max` seconds (random, default 1-5 minutes). - First player to `!bang` scores a point. Each player has one shell; use `!reload` to reload. - `!bang` and `!reload` are ignored while the hunt is off. - If no one shoots within `flee_time` seconds (default 45), the duck flees and the round is marked empty. - After `idle_rounds` consecutive empty rounds the hunt auto-stops. ## Config keys | Key | Default | Description | |-----|---------|-------------| | `[daffy] db_path` | `~/daffy_scores.db` | Path to SQLite scores database | | `[daffy] idle_rounds` | 3 | Empty rounds before auto-stop (0 = never) | | `[daffy] spawn_min` | 60 | Minimum seconds between duck spawns | | `[daffy] spawn_max` | 300 | Maximum seconds between duck spawns | | `[daffy] flee_time` | 45 | Seconds before an unshot duck flees |