Queer European MD passionate about IT

bot.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. """Provide bike sharing information via Telegram bot."""
  2. # Standard library modules
  3. import logging
  4. import os
  5. import sys
  6. # Third party modules
  7. from davtelepot.bot import Bot
  8. # Project modules
  9. from . import bot_tools
  10. from . import ciclopi
  11. from . import helper
  12. from . import roles
  13. from .data.passwords import bot_token
  14. if __name__ == '__main__':
  15. path = os.path.dirname(__file__)
  16. try:
  17. from data.config import log_file_name
  18. except ImportError:
  19. log_file_name = 'CicloPi.info.log'
  20. try:
  21. from data.config import errors_file_name
  22. except ImportError:
  23. errors_file_name = 'CicloPi.errors.log'
  24. try:
  25. from data.config import local_host, port
  26. except ImportError:
  27. local_host, port = '127.0.0.1', 3000
  28. log_file = f"{path}/data/{log_file_name}"
  29. errors_file = f"{path}/data/{errors_file_name}"
  30. # Outputs the log in console, log_file and errors_file
  31. # Log formatter: datetime, module name (filled with spaces up to 15
  32. # characters), logging level name (filled to 8), message
  33. log_formatter = logging.Formatter(
  34. "%(asctime)s [%(module)-15s %(levelname)-8s] %(message)s",
  35. style='%'
  36. )
  37. root_logger = logging.getLogger()
  38. root_logger.setLevel(logging.DEBUG)
  39. file_handler = logging.FileHandler(log_file, mode="a", encoding="utf-8")
  40. file_handler.setFormatter(log_formatter)
  41. file_handler.setLevel(logging.DEBUG)
  42. root_logger.addHandler(file_handler)
  43. file_handler = logging.FileHandler(errors_file, mode="a", encoding="utf-8")
  44. file_handler.setFormatter(log_formatter)
  45. file_handler.setLevel(logging.ERROR)
  46. root_logger.addHandler(file_handler)
  47. consoleHandler = logging.StreamHandler()
  48. consoleHandler.setFormatter(log_formatter)
  49. consoleHandler.setLevel(logging.DEBUG)
  50. root_logger.addHandler(consoleHandler)
  51. # Instantiate bot
  52. bot = Bot(token=bot_token, database_url='ciclopibot/data/ciclopi.db')
  53. # Assign commands to bot
  54. bot.set_unknown_command_message(
  55. "Comando sconosciuto!\n"
  56. "Scrivi /help per visualizzare la guida."
  57. )
  58. bot.set_authorization_function(
  59. roles.get_authorization_function(bot)
  60. )
  61. bot.set_authorization_denied_message(
  62. "Non disponi di autorizzazioni sufficienti per questo comando."
  63. )
  64. with bot.db as db:
  65. db['users'].upsert(
  66. dict(
  67. telegram_id=63538990,
  68. privileges=1
  69. ),
  70. ['telegram_id']
  71. )
  72. bot_tools.init(bot)
  73. ciclopi.init(bot)
  74. helper.init(
  75. bot=bot,
  76. help_message="<b>📖 Guida di {bot.name}\n\n</b>"
  77. "Benvenuto!\n"
  78. "Per conoscere i comandi disponibili visita l'apposita "
  79. "sezione della guida premendo il pulsante Comandi.\n\n"
  80. "Autore e amministratore del bot: @davte",
  81. help_sections_file='ciclopibot/data/help.json'
  82. )
  83. roles.init(bot)
  84. # Run bot(s)
  85. logging.info("Presso ctrl+C to exit.")
  86. exit_state = Bot.run(
  87. local_host=local_host,
  88. port=port
  89. )
  90. sys.exit(exit_state)