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.commands import handle_command
|
|
|
|
from handlers.messages_routing import messages_routing
|
2023-09-18 07:50:48 +00:00
|
|
|
from handlers.handle_join_request import handle_join_request
|
2024-01-06 11:32:25 +00:00
|
|
|
from bot.config import BOT_TOKEN, FEEDBACK_CHAT_ID
|
2024-01-07 09:19:46 +00:00
|
|
|
from bot.api import send_message
|
2023-09-11 20:04:53 +00:00
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
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):
|
|
|
|
async with session.get(url) as response:
|
|
|
|
return await response.json()
|
|
|
|
|
2023-09-11 20:04:53 +00:00
|
|
|
|
2024-01-06 11:32:25 +00:00
|
|
|
async def main():
|
|
|
|
async with ClientSession() as session:
|
|
|
|
offset = 0 # начальное значение offset
|
|
|
|
while True:
|
|
|
|
updates = await fetch(session, f"{api_url}getUpdates?offset={offset}")
|
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")
|
|
|
|
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
|
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__":
|
|
|
|
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
|
|
|
|
|
2024-01-06 11:32:25 +00:00
|
|
|
# Запуск асинхронного цикла
|
|
|
|
asyncio.run(main())
|