myanimebot.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. # Copyright Penta & lulu (c) 2018/2022 - Under BSD License - Based on feed2discord.py by Eric Eisenhart
  3. # Compatible for Python 3.7.X
  4. # Library import
  5. import asyncio
  6. import logging
  7. import sys
  8. import urllib.request
  9. import signal
  10. from configparser import ConfigParser
  11. from datetime import datetime
  12. from typing import List, Tuple
  13. import aiohttp
  14. import discord
  15. import feedparser
  16. from aiohttp.web_exceptions import HTTPError, HTTPNotModified
  17. from dateutil.parser import parse as parse_datetime
  18. from html2text import HTML2Text
  19. # Our modules
  20. import myanimebot.anilist as anilist
  21. import myanimebot.globals as globals
  22. import myanimebot.utils as utils
  23. import myanimebot.myanimelist as myanimelist
  24. import myanimebot.commands as commands
  25. from myanimebot.discord import send_embed_wrapper, build_embed, MyAnimeBot
  26. if not sys.version_info[:2] >= (3, 7):
  27. print("ERROR: Requires python 3.7 or newer.")
  28. exit(1)
  29. def exit_app(signum=None, frame=None):
  30. globals.logger.debug("Received signal {}".format(signum))
  31. globals.logger.info("Closing all tasks...")
  32. if globals.MAL_ENABLED:
  33. globals.task_feed.cancel()
  34. if globals.ANI_ENABLED:
  35. globals.task_feed_anilist.cancel()
  36. globals.task_thumbnail.cancel()
  37. globals.task_gameplayed.cancel()
  38. # Closing all ressources
  39. globals.conn.close()
  40. globals.logger.critical("Script halted.")
  41. # Starting main function
  42. if __name__ == "__main__":
  43. # Catch SIGINT signal (Ctrl-C)
  44. signal.signal(signal.SIGINT, exit_app)
  45. # Run the app
  46. try:
  47. globals.client = MyAnimeBot()
  48. globals.client.run(globals.token)
  49. except Exception as e:
  50. globals.logger.error("Encountered exception while running the bot: {}".format(e))
  51. exit_app()