1
0

myanimebot.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 discord.utils
  14. discord.utils.setup_logging = lambda *args, **kwargs: None
  15. import discord
  16. import aiohttp
  17. import feedparser
  18. from aiohttp.web_exceptions import HTTPError, HTTPNotModified
  19. from dateutil.parser import parse as parse_datetime
  20. from html2text import HTML2Text
  21. # Our modules
  22. import myanimebot.anilist as anilist
  23. import myanimebot.globals as globals
  24. import myanimebot.utils as utils
  25. import myanimebot.myanimelist as myanimelist
  26. import myanimebot.commands as commands
  27. from myanimebot.discord import send_embed_wrapper, build_embed, MyAnimeBot
  28. if not sys.version_info[:2] >= (3, 7):
  29. print("ERROR: Requires python 3.7 or newer.")
  30. exit(1)
  31. def exit_app(signum=None, frame=None):
  32. globals.logger.debug("Received signal {}".format(signum))
  33. globals.logger.info("Closing all tasks...")
  34. if globals.MAL_ENABLED:
  35. globals.task_feed.cancel()
  36. if globals.ANI_ENABLED:
  37. globals.task_feed_anilist.cancel()
  38. globals.task_thumbnail.cancel()
  39. globals.task_gameplayed.cancel()
  40. # Closing all ressources
  41. globals.conn.close()
  42. globals.logger.critical("Script halted.")
  43. # Starting main function
  44. if __name__ == "__main__":
  45. # Catch SIGINT signal (Ctrl-C)
  46. signal.signal(signal.SIGINT, exit_app)
  47. # Run the app
  48. try:
  49. globals.client = MyAnimeBot()
  50. globals.client.run(globals.token)
  51. except Exception as e:
  52. globals.logger.error("Encountered exception while running the bot: {}".format(e))
  53. exit_app()