import asyncio from datetime import datetime import rollbot from commands import config class TerminalBot(rollbot.Rollbot[str]): def __init__(self): super().__init__( config.extend(rollbot.CommandConfiguration(bangs=("!",))), "/tmp/terminalbot.db" ) def read_config(self, key): if key == "democracy.candidates": return ["cand1", "cand2"] if key == "riddle.sleep": return 10 return key def parse(self, raw): return rollbot.Message( origin_id="REPL", channel_id=".", sender_id=".", timestamp=datetime.now(), origin_admin=True, channel_admin=True, sender_name="User", text="!" + raw, attachments=[], ) async def respond(self, res): print(res.text, flush=True) for att in res.attachments: print(f"Attached: {att.name}", flush=True) async def run(): bot = TerminalBot() await bot.on_startup() try: while True: await bot.on_message(input("> !")) except EOFError: pass finally: await bot.on_shutdown() asyncio.run(run())