main.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from aiogram import Bot, Dispatcher, executor, types
  2. from aiogram.dispatcher import FSMContext
  3. import os
  4. from dotenv import load_dotenv
  5. import logging
  6. from parse_vedabase import get_full_verse
  7. logfile = 'data.log'
  8. logging.basicConfig(filename=logfile,
  9. format='%(asctime)s %(levelname)-2s %(message)s',
  10. filemode='a',
  11. datefmt='%Y-%m-%d %H:%M:%S',
  12. level=logging.INFO)
  13. load_dotenv()
  14. bot = Bot(token=os.getenv('TELEGRAM_BOT_TOKEN'))
  15. dp = Dispatcher(bot)
  16. root_id = os.getenv('ROOT_ID')
  17. @dp.message_handler(commands=['start', 'help'])
  18. async def send_welcome(message: types.Message):
  19. """
  20. Обрабатывает команды `/start` и `/help`
  21. """
  22. user_info = [
  23. str(message.from_user.id),
  24. message.from_user.first_name,
  25. dict(message.from_user).get(
  26. 'last_name', 'None'),
  27. dict(message.from_user).get('username', 'None')
  28. ]
  29. logging.info(' | '.join(user_info))
  30. await message.reply("""To find the verse from the scripture, enter:
  31. - start with 'verse '
  32. - then enter the desired language ('en', 'nl', 'ru', 'da', 'et', 'sk', 'es', 'de', 'uk', 'lt', 'sl', 'fi', 'cs', 'hu', 'fr', 'ko', 'pt-br', 'bg', 'ja', 'zu')
  33. BG: 'verse ru bg 10.8'
  34. SB: 'verse uk sb 1.10.8'
  35. CC (adi, madhya, antya): 'verse en cc adi 10.8'""")
  36. @dp.message_handler(lambda message: message.text.lower().startswith("verse "))
  37. async def search_verse(message: types.Message):
  38. message_text = message.text.lower()
  39. if len(message_text.split()) < 4 or len(message_text.split()) > 5:
  40. return await message.reply('Wrong query string. Try /help command')
  41. query_string = message_text.split('verse ')[1]
  42. verse = get_full_verse(query_string)
  43. if 'errors' in verse:
  44. logging.warning(
  45. f"{message_text.split('verse ')[1]} - {' | '.join(verse['errors'])}")
  46. await message.reply('\n'.join(verse['errors']))
  47. else:
  48. # logging.info(message_text.split('verse ')[1])
  49. await message.reply('\n\n'.join(list(verse.values())[:-1]))
  50. @dp.message_handler()
  51. async def echo(message: types.Message):
  52. await message.answer("Do not understand this message. Try /help command", reply_markup=None)
  53. if __name__ == '__main__':
  54. executor.start_polling(dp, skip_updates=True)