summaryrefslogtreecommitdiffstats
path: root/games.py
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2026-03-09 01:21:59 -0700
committerPinapelz <yukais@pinapelz.com>2026-03-09 01:22:15 -0700
commit3c34982281cb6f3a8fc9bfef313e8149cad0cb50 (patch)
treef3df06a90f2d8ca873612b41bff11ab6b6f34024 /games.py
parent6a31ee36a0660ff17b88b3e3707564ffbd2bdfd4 (diff)
add manual random games func
Diffstat (limited to 'games.py')
-rw-r--r--games.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/games.py b/games.py
new file mode 100644
index 0000000..1008516
--- /dev/null
+++ b/games.py
@@ -0,0 +1,80 @@
+import db
+
+CATEGORY = "game"
+
+
+def init_db():
+ db.init_db()
+ db.seed(CATEGORY)
+
+
+def _format(row) -> str:
+ note_line = f"\n- {row['note']}" if row['note'].strip() else ""
+ return f"{row['name']}{note_line}\nAdded by {row['added_by']}"
+
+
+HELP_TEXT = (
+ "🎮 Game bot commands:\n"
+ " !addgame <name> [| <note>] — add a new game (names must be unique, note is optional)\n"
+ " !removegame <name> — remove a game by name\n"
+ " !findgame [keyword] — get a random game (optionally filtered by keyword in note)"
+)
+
+
+async def handle_game_command(bot_api, room_id: str, sender: str, body: str, self_name: str):
+ stripped = body.strip()
+ lower = stripped.lower()
+
+ # Passive trigger: any message containing "what to play"
+ if "what to play" in lower and not lower.startswith("!") and self_name in lower:
+ pick = db.find_item(CATEGORY)
+ reply = f"Fresh from the list of considerations:\n\n{_format(pick)}" if pick else "No games in the list yet. Use !addgame to add one!"
+ await bot_api.send_text_message(room_id, reply)
+ return True
+
+ if not lower.startswith("!"):
+ return False
+
+ # !addgame <name> | <note>
+ if lower.startswith("!addgame"):
+ rest = stripped[len("!addgame"):].strip()
+ if not rest:
+ await bot_api.send_text_message(
+ room_id,
+ "Usage: !addgame <name> [| <note>]\nExample: !addgame Minecraft | sandbox survival game\nExample: !addgame Minecraft",
+ )
+ return True
+ if "|" in rest:
+ name, _, note = rest.partition("|")
+ else:
+ name = rest
+ note = ""
+ added_by = sender.lstrip("@").split(":")[0]
+ error = db.add_item(CATEGORY, name, added_by, note=note)
+ reply = error if error else f"✅ I will add **{name.strip()}** to the list of considerations"
+ await bot_api.send_text_message(room_id, reply)
+ return True
+
+ # !removegame <name>
+ if lower.startswith("!removegame"):
+ name = stripped[len("!removegame"):].strip()
+ if not name:
+ await bot_api.send_text_message(
+ room_id,
+ "Usage: !removegame <name>\nExample: !removegame Minecraft",
+ )
+ return True
+ result = db.remove_item(CATEGORY, name)
+ if result is None:
+ reply = f"❌ No game named **{name}** found. Names are case-insensitive."
+ else:
+ reply = f"🗑️ Removed **{result}** from the game list."
+ await bot_api.send_text_message(room_id, reply)
+ return True
+
+ # !games (help alias)
+ if lower.startswith("!games"):
+ await bot_api.send_text_message(room_id, HELP_TEXT)
+ return True
+
+ return False
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage