nagbot.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import requests
  2. import json
  3. import sys
  4. import time
  5. import config
  6. import logging
  7. import requests
  8. logging.basicConfig(filename=config.logfile, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
  9. def live_now(): # Check if the stream is live
  10. response = requests.get(f'{config.owncast_url}/api/status')
  11. response = response.json()
  12. return response['online']
  13. def send_msg(msg):
  14. if live_now():
  15. logging.info(f'Sending \"{msg}\"...')
  16. new_status = {'body': msg}
  17. headers = {'Authorization': f'Bearer {config.auth_bearer}'}
  18. response = requests.post(f'{config.owncast_url}/api/integrations/chat/send', data=json.dumps(new_status), headers=headers)
  19. return response.json()
  20. else:
  21. logging.info(f'Owncast stream is not live, so not sending messages.')
  22. def main():
  23. logging.info(f'Starting nagbot...')
  24. for nag in config.nags:
  25. send_msg(nag)
  26. time.sleep(config.interval) # Wait between messages
  27. try:
  28. while True:
  29. main()
  30. except KeyboardInterrupt:
  31. logging.info(f'Ctrl-alt-delete caught. Exiting program...')
  32. print('Ctrl-alt-delete caught. Exiting program...')
  33. sys.exit()
  34. except Exception as error:
  35. logging.info(f'\n{error}\n')
  36. sys.exit()