import asyncio import logging import signal import sys from aiohttp import ClientSession from handlers.commands import handle_command from handlers.messages_routing import messages_routing from handlers.handle_join_request import handle_join_request from bot.config import BOT_TOKEN, FEEDBACK_CHAT_ID from bot.api import send_message logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) state = dict() api_url = f'https://api.telegram.org/bot{BOT_TOKEN}/' async def fetch(session, url): async with session.get(url) as response: return await response.json() async def main(): async with ClientSession() as session: offset = 0 # начальное значение offset while True: updates = await fetch(session, f"{api_url}getUpdates?offset={offset}") for update in updates.get("result", []): try: message = update.get("message") join_chat_request = update.get("join_chat_request") if message: text = message.get("text") if text.startswith('/'): await handle_command(message, state) else: await messages_routing(message, state) elif join_chat_request: await handle_join_request(join_chat_request) except Exception as e: logger.error(e) logger.debug(update) import traceback text = traceback.format_exc() await send_message(FEEDBACK_CHAT_ID, text) offset = update["update_id"] + 1 await asyncio.sleep(1.0) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) # Запуск асинхронного цикла asyncio.run(main())