1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import asyncio
- from datetime import datetime
- import toml
- import rollbot
- from commands import config
- with open("secrets.toml", "r") as sfile:
- secrets = toml.load(sfile)
- 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
- cfg = secrets
- for part in key.split("."):
- cfg = cfg.get(part, None)
- if cfg is None:
- return None
- return cfg
- async 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):
- if res.text is not None:
- 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())
|