teamspeak.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from logging import Logger
  2. import random
  3. from rollbot import as_command, RollbotFailure
  4. from rollbot.injection import Config, Request
  5. def fmt_list(nicks):
  6. if len(nicks) == 0:
  7. return "No one in teamspeak!"
  8. if len(nicks) == 1:
  9. return ("Only " if random.randint(0, 1) == 0 else "Oops all ") + nicks[0]
  10. return "I see the following people: " + ", ".join(nicks)
  11. @as_command
  12. async def teamspeak(query: Config("teamspeak.query"), req: Request, logger: Logger):
  13. try:
  14. async with req.get(query) as res:
  15. res.raise_for_status()
  16. return fmt_list((await res.json())["users"])
  17. except:
  18. logger.exception("Could not reach teamspeak")
  19. RollbotFailure.SERVICE_DOWN.raise_exc()
  20. @as_command
  21. async def teemspeem(query: Config("teamspeak.query"), req: Request, logger: Logger):
  22. result = await teamspeak(query, req, logger)
  23. for v in "aiou":
  24. result = result.replace(v, "e").replace(v.upper(), "E")
  25. return result.replace("k", "m").replace("K", "M")
  26. @as_command
  27. async def speamteek(query: Config("teamspeak.query"), req: Request, logger: Logger):
  28. return (await teamspeak(query, req, logger))[::-1]
  29. @as_command
  30. async def teamscream(query: Config("teamspeak.query"), req: Request, logger: Logger):
  31. return (await teamspeak(query, req, logger)).upper()
  32. @as_command
  33. async def ts(query: Config("teamspeak.query"), req: Request, logger: Logger):
  34. try:
  35. async with req.get(query) as res:
  36. res.raise_for_status()
  37. initials = [name[0] for name in (await res.json())["users"]]
  38. if len(initials) == 0:
  39. return ""
  40. return "i c: " + ", ".join(initials)
  41. except:
  42. logger.exception("Could not reach teamspeak")
  43. RollbotFailure.SERVICE_DOWN.raise_exc()