welcomecenterbot/main.py

58 lines
2.0 KiB
Python
Raw Normal View History

2023-09-11 20:04:53 +00:00
import asyncio
import logging
2024-01-06 11:25:35 +00:00
import signal
2024-01-07 09:19:46 +00:00
import sys
2024-01-06 11:32:25 +00:00
from aiohttp import ClientSession
2024-01-07 09:19:46 +00:00
from handlers.messages_routing import messages_routing
2024-01-07 11:41:27 +00:00
from handlers.handle_join_request import handle_join_request, handle_reaction_on_request
2024-01-06 11:32:25 +00:00
from bot.config import BOT_TOKEN, FEEDBACK_CHAT_ID
2024-01-07 11:41:27 +00:00
from bot.api import telegram_api
2023-09-11 20:04:53 +00:00
2024-01-07 11:41:27 +00:00
logging.basicConfig(level=logging.DEBUG)
2023-09-11 20:04:53 +00:00
logger = logging.getLogger(__name__)
2024-01-07 09:19:46 +00:00
state = dict()
2023-09-11 20:04:53 +00:00
2024-01-06 11:32:25 +00:00
api_url = f'https://api.telegram.org/bot{BOT_TOKEN}/'
async def fetch(session, url):
2024-01-07 11:41:27 +00:00
logger.debug(f"fetching: {url}")
2024-01-06 11:32:25 +00:00
async with session.get(url) as response:
2024-01-07 11:41:27 +00:00
logger.debug(response)
2024-01-06 11:32:25 +00:00
return await response.json()
2023-09-11 20:04:53 +00:00
2024-01-07 11:41:27 +00:00
async def start():
logger.info("\tstarted")
2024-01-06 11:32:25 +00:00
async with ClientSession() as session:
offset = 0 # начальное значение offset
while True:
2024-01-07 11:41:27 +00:00
updates = await fetch(session, f"{api_url}getUpdates?offset={offset}&allowed_updates=['message', 'join_chat_request', 'message_reaction']")
# logger.info('.' if updates['result'] == [] else updates)
2024-01-07 09:19:46 +00:00
for update in updates.get("result", []):
try:
message = update.get("message")
join_chat_request = update.get("join_chat_request")
2024-01-07 11:41:27 +00:00
message_reaction = update.get("message_reaction")
2024-01-07 09:19:46 +00:00
if message:
2024-01-07 11:41:27 +00:00
await messages_routing(message, state)
2024-01-07 09:19:46 +00:00
elif join_chat_request:
await handle_join_request(join_chat_request)
2024-01-07 11:41:27 +00:00
elif message_reaction:
await handle_reaction_on_request(message_reaction)
2024-01-07 09:19:46 +00:00
except Exception as e:
logger.error(e)
import traceback
text = traceback.format_exc()
2024-01-07 11:41:27 +00:00
await telegram_api("sendMessage", chat_id=FEEDBACK_CHAT_ID, text=text)
2024-01-07 09:19:46 +00:00
offset = update["update_id"] + 1
2023-09-11 20:04:53 +00:00
2024-01-06 11:32:25 +00:00
await asyncio.sleep(1.0)
2023-09-11 20:04:53 +00:00
2024-01-06 11:25:35 +00:00
if __name__ == "__main__":
2024-01-06 11:32:25 +00:00
# Запуск асинхронного цикла
2024-01-07 11:41:27 +00:00
asyncio.run(start())