util.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from functools import reduce
  2. import requests
  3. from requests.exceptions import ConnectionError
  4. def post_message(msg, bot_id):
  5. requests.post(
  6. "https://api.groupme.com/v3/bots/post",
  7. json={
  8. "bot_id": bot_id,
  9. "text": msg
  10. },
  11. timeout=10
  12. )
  13. def upload_image(key, content):
  14. try:
  15. return True, requests.post(
  16. "https://image.groupme.com/pictures",
  17. headers={
  18. "Content-Type": "image/png",
  19. "X-Access-Token": key,
  20. },
  21. data=content
  22. ).json()["payload"]["url"]
  23. except ConnectionError as ce:
  24. return False, {
  25. "explain": "Could not reach GroupMe image service.",
  26. "exception": ce
  27. }
  28. except (KeyError, JSONDecodeError) as e:
  29. return False, {
  30. "explain": "Could not parse response from GroupMe image service.",
  31. "exception": e
  32. }
  33. def find_all_subclasses(baseClass):
  34. def get_subclasses(clazz):
  35. s = set(clazz.__subclasses__())
  36. return s | reduce(set.union, (get_subclasses(sc) for sc in s), set())
  37. return get_subclasses(baseClass)