welcomecenterbot/main.py
2024-09-27 09:23:55 +03:00

62 lines
2.2 KiB
Python

import asyncio
import logging
from handlers.messages_routing import messages_routing
from handlers.handle_join_request import handle_join_request, handle_reaction_on_request
from bot.config import FEEDBACK_CHAT_ID
from bot.api import telegram_api
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
state = dict()
async def start():
logger.info("\n\npolling started\n\n")
offset = 0 # init offset
while True:
response = await telegram_api(
"getUpdates",
offset=offset,
allowed_updates=["message", "message_reaction", "chat_join_request"],
)
# logger.debug(response)
if isinstance(response, dict):
result = response.get("result", [])
for update in result:
logger.debug(update)
try:
message = update.get("message", update.get("edited_message"))
join_chat_request = update.get("join_chat_request")
message_reaction = update.get("join_chat_request")
if message:
# logger.debug(f"chat: {message.get("chat", message.get("chat_id"))}")
await messages_routing(message, state)
elif join_chat_request:
await handle_join_request(join_chat_request)
elif message_reaction:
await handle_reaction_on_request(message_reaction)
except Exception as e:
logger.error(e)
import traceback
text = traceback.format_exc()
formatted_text = f"```log\n{text}```"
await telegram_api(
"sendMessage",
chat_id=FEEDBACK_CHAT_ID,
text=formatted_text,
parse_mode="MarkdownV2",
)
offset = update["update_id"] + 1
await asyncio.sleep(1.0)
else:
logger.error(" \n\n\n!!! getUpdates polling error\n\n\n")
await asyncio.sleep(30.0)
if __name__ == "__main__":
asyncio.run(start())