Queer European MD passionate about IT

bot.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import logging
  2. import os
  3. import sys
  4. import davtelepot.bot
  5. from davtelepot.messages import (default_unknown_command_message as unknown_command_message,
  6. default_authorization_denied_message as authorization_denied_message)
  7. from . import authorization
  8. from .messages import language_messages, supported_languages
  9. current_path = os.path.dirname(
  10. os.path.abspath(
  11. __file__
  12. )
  13. )
  14. def append_to_passwords_file(line_to_append):
  15. with open(f'{current_path}/data/passwords.py', 'a') as passwords_file:
  16. passwords_file.write(line_to_append)
  17. try:
  18. from .data.passwords import telegram_token
  19. if not telegram_token:
  20. raise ImportError
  21. except ImportError as e:
  22. try:
  23. telegram_token = input("Enter telegram bot API token:\n"
  24. "For more information: https://core.telegram.org/bots/\n\t\t")
  25. append_to_passwords_file(f'telegram_token = "{telegram_token}"\n')
  26. except KeyboardInterrupt:
  27. logging.error("Telegram bot token not provided, aborting...")
  28. sys.exit(1)
  29. bic_bot = davtelepot.bot.Bot(token=telegram_token,
  30. database_url=f'bic_bot/data/bot.db')
  31. def run():
  32. try:
  33. from .data.config import log_file_name
  34. except ImportError:
  35. log_file_name = 'bic_bot.log'
  36. try:
  37. from .data.config import errors_file_name
  38. except ImportError:
  39. errors_file_name = 'bic_bot.errors.log'
  40. log_file = f"{current_path}/data/{log_file_name}"
  41. errors_file = f"{current_path}/data/{errors_file_name}"
  42. # Outputs the log in console, log_file and errors_file
  43. # Log formatter: datetime, module name (filled with spaces up to 15
  44. # characters), logging level name (filled to 8), message
  45. # noinspection SpellCheckingInspection
  46. log_formatter = logging.Formatter(
  47. "%(asctime)s [%(module)-15s %(levelname)-8s] %(message)s",
  48. style='%'
  49. )
  50. root_logger = logging.getLogger()
  51. root_logger.setLevel(logging.DEBUG)
  52. file_handler = logging.FileHandler(log_file, mode="a", encoding="utf-8")
  53. file_handler.setFormatter(log_formatter)
  54. file_handler.setLevel(logging.DEBUG)
  55. root_logger.addHandler(file_handler)
  56. file_handler = logging.FileHandler(errors_file, mode="a", encoding="utf-8")
  57. file_handler.setFormatter(log_formatter)
  58. file_handler.setLevel(logging.ERROR)
  59. root_logger.addHandler(file_handler)
  60. console_handler = logging.StreamHandler()
  61. console_handler.setFormatter(log_formatter)
  62. console_handler.setLevel(logging.DEBUG)
  63. root_logger.addHandler(console_handler)
  64. bic_bot.set_path(current_path)
  65. bic_bot.set_class_log_file_name(log_file_name)
  66. bic_bot.set_class_errors_file_name(errors_file_name)
  67. bic_bot.set_unknown_command_message(
  68. unknown_command_message
  69. )
  70. bic_bot.set_authorization_denied_message(
  71. authorization_denied_message
  72. )
  73. davtelepot.authorization.init(telegram_bot=bic_bot)
  74. authorization.init(telegram_bot=bic_bot)
  75. davtelepot.administration_tools.init(telegram_bot=bic_bot)
  76. davtelepot.languages.init(telegram_bot=bic_bot,
  77. language_messages=language_messages,
  78. supported_languages=supported_languages)
  79. exit_code = bic_bot.run()
  80. sys.exit(exit_code)