2023-09-11 20:04:53 +00:00
|
|
|
import asyncio
|
|
|
|
import logging
|
2024-02-12 16:30:08 +00:00
|
|
|
from handlers.messages_routing import messages_routing
|
2024-09-26 10:07:01 +00:00
|
|
|
from handlers.handle_join_request import handle_join_request, handle_reaction_on_request
|
2024-09-26 14:40:13 +00:00
|
|
|
from bot.config import FEEDBACK_CHAT_ID
|
2024-09-26 10:07:01 +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)
|
2024-09-26 10:07:01 +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-06-03 10:27:42 +00:00
|
|
|
|
2024-09-26 10:07:01 +00:00
|
|
|
async def start():
|
2024-09-26 11:10:24 +00:00
|
|
|
logger.info("\n\npolling started\n\n")
|
2024-09-26 14:40:13 +00:00
|
|
|
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:
|
2024-09-26 16:50:07 +00:00
|
|
|
logger.debug(update)
|
2024-09-26 14:40:13 +00:00
|
|
|
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()
|
2024-09-26 19:47:03 +00:00
|
|
|
formatted_text = f"```log\n{text}```"
|
|
|
|
await telegram_api("sendMessage", chat_id=FEEDBACK_CHAT_ID, text=formatted_text, parse_mode='MarkdownV2')
|
2024-09-26 14:40:13 +00:00
|
|
|
|
|
|
|
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)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
|
|
|
|
2024-01-06 11:25:35 +00:00
|
|
|
if __name__ == "__main__":
|
2024-09-26 10:07:01 +00:00
|
|
|
asyncio.run(start())
|