123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- """Provide bike sharing information via Telegram bot."""
- # Standard library modules
- import logging
- import os
- import sys
- # Third party modules
- import davtelepot
- from davtelepot import authorization, languages
- # Project modules
- from . import bot_tools
- from . import ciclopi
- from . import helper
- from .data.passwords import bot_token
- language_messages = {
- 'language_command': {
- 'name': {
- 'en': "/language",
- 'it': "/lingua"
- },
- 'alias': {
- 'en': "Language 🗣",
- 'it': "Lingua 🗣"
- },
- 'description': {
- 'en': "Change language settings",
- 'it': "Cambia le impostazioni della lingua"
- }
- },
- 'language_button': {
- 'description': {
- 'en': "Change language settings",
- 'it': "Cambia le impostazioni della lingua"
- }
- },
- 'language_panel': {
- 'text': {
- 'en': "<b>Choose a language</b>",
- 'it': "<b>Seleziona una lingua</b>"
- }
- }
- }
- supported_languages = {
- 'en': {
- 'flag': '🇬🇧',
- 'name': 'English'
- },
- 'it': {
- 'flag': '🇮🇹',
- 'name': 'Italiano'
- }
- }
- if __name__ == '__main__':
- path = os.path.dirname(__file__)
- try:
- from .data.config import log_file_name
- except ImportError:
- log_file_name = 'CicloPi.info.log'
- try:
- from .data.config import errors_file_name
- except ImportError:
- errors_file_name = 'CicloPi.errors.log'
- try:
- from .data.config import local_host, port
- except ImportError:
- local_host, port = '127.0.0.1', 3000
- log_file = f"{path}/data/{log_file_name}"
- errors_file = f"{path}/data/{errors_file_name}"
- # Outputs the log in console, log_file and errors_file
- # Log formatter: datetime, module name (filled with spaces up to 15
- # characters), logging level name (filled to 8), message
- log_formatter = logging.Formatter(
- "%(asctime)s [%(module)-15s %(levelname)-8s] %(message)s",
- style='%'
- )
- root_logger = logging.getLogger()
- root_logger.setLevel(logging.DEBUG)
- file_handler = logging.FileHandler(log_file, mode="a", encoding="utf-8")
- file_handler.setFormatter(log_formatter)
- file_handler.setLevel(logging.DEBUG)
- root_logger.addHandler(file_handler)
- file_handler = logging.FileHandler(errors_file, mode="a", encoding="utf-8")
- file_handler.setFormatter(log_formatter)
- file_handler.setLevel(logging.ERROR)
- root_logger.addHandler(file_handler)
- consoleHandler = logging.StreamHandler()
- consoleHandler.setFormatter(log_formatter)
- consoleHandler.setLevel(logging.DEBUG)
- root_logger.addHandler(consoleHandler)
- # Instantiate bot
- bot = davtelepot.bot.Bot(token=bot_token,
- database_url='ciclopibot/data/ciclopi.db')
- # Assign commands to bot
- bot.set_unknown_command_message(
- "Comando sconosciuto!\n"
- "Scrivi /help per visualizzare la guida."
- )
- bot.set_authorization_denied_message(
- "Non disponi di autorizzazioni sufficienti per questo comando."
- )
- with bot.db as db:
- db['users'].upsert(
- dict(
- telegram_id=63538990,
- privileges=1
- ),
- ['telegram_id']
- )
- bot_tools.init(bot)
- ciclopi.init(bot)
- helper.init(
- bot=bot,
- help_message="<b>📖 Guida di {bot.name}\n\n</b>"
- "Benvenuto!\n"
- "Per conoscere i comandi disponibili visita l'apposita "
- "sezione della guida premendo il pulsante Comandi.\n\n"
- "Autore e amministratore del bot: @davte",
- help_sections_file='ciclopibot/data/help.json'
- )
- authorization.init(bot, language='it')
- languages.init(
- bot, language='it', language_messages=language_messages,
- supported_languages=supported_languages
- )
- # Run bot(s)
- logging.info("Presso ctrl+C to exit.")
- exit_state = davtelepot.bot.Bot.run(
- local_host=local_host,
- port=port
- )
- sys.exit(exit_state)
|