|
| 1 | +import logging |
| 2 | +import os |
| 3 | +import time |
| 4 | +from datetime import timedelta |
| 5 | + |
| 6 | +from aiogram import Bot, Dispatcher, executor, types |
| 7 | +from dotenv import load_dotenv |
| 8 | + |
| 9 | +load_dotenv() |
| 10 | + |
| 11 | +bot = Bot(token=os.getenv('TELEGRAM_API_KEY')) |
| 12 | +dp = Dispatcher(bot) |
| 13 | +SLEEP_AFTER_EXCEPTION = timedelta(minutes=1).seconds |
| 14 | + |
| 15 | + |
| 16 | +@dp.message_handler(commands=['start']) |
| 17 | +async def send_welcome(message: types.Message): |
| 18 | + chat_id: int = message.chat.id |
| 19 | + user_id: str = message.from_user.id |
| 20 | + username: str = message.from_user.username |
| 21 | + request_message: str = message.text |
| 22 | + |
| 23 | + await message.answer_chat_action('typing') |
| 24 | + logging.info('>>> User[%s|%s:@%s]: %r', chat_id, user_id, username, request_message) |
| 25 | + await message.reply('Well, hello!') |
| 26 | + |
| 27 | + |
| 28 | +@dp.message_handler() |
| 29 | +async def echo(message: types.Message): |
| 30 | + chat_id: int = message.chat.id |
| 31 | + user_id: str = message.from_user.id |
| 32 | + username: str = message.from_user.username |
| 33 | + request_message: str = message.text |
| 34 | + |
| 35 | + await message.answer_chat_action('typing') |
| 36 | + logging.info('>>> User[%s|%s:@%s]: %r', chat_id, user_id, username, request_message) |
| 37 | + logging.info('<<< User[%s|%s:@%s]: %r', chat_id, user_id, username, request_message) |
| 38 | + await message.answer(request_message) |
| 39 | + |
| 40 | + |
| 41 | +if __name__ == '__main__': |
| 42 | + logging.basicConfig( |
| 43 | + level=logging.getLevelName(os.getenv('LOG_LEVEL')), |
| 44 | + format='%(levelname)9s | %(asctime)s | %(name)30s | %(filename)20s | %(lineno)6s | %(message)s', |
| 45 | + ) |
| 46 | + |
| 47 | + while True: |
| 48 | + try: |
| 49 | + executor.start_polling(dp, skip_updates=True) |
| 50 | + except Exception as ex: |
| 51 | + logging.error('Error found: %r. Restarting...', ex) |
| 52 | + time.sleep(SLEEP_AFTER_EXCEPTION) |
0 commit comments