polling-fix

This commit is contained in:
Untone 2024-01-06 14:32:25 +03:00
parent 908529b5bb
commit 91e2d41cb6

36
main.py
View File

@ -1,23 +1,29 @@
import asyncio
import logging
import signal
import sys
from aiohttp import web
from bot.api import send_message
from aiohttp import ClientSession
from handlers.command_my import send_message
from handlers.routing import handle_routing
from handlers.callback_unlink import handle_unlink
from handlers.callback_vouch import handle_button
from handlers.handle_join_request import handle_join_request
from handlers.handle_startup import handle_startup
from handlers.handle_members_change import handle_join, handle_left
from storage.profile import Profile
from bot.config import BOT_TOKEN, FEEDBACK_CHAT_ID
from bot.state import State
from bot.config import FEEDBACK_CHAT_ID
from storage import Profile
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
state = State()
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 command_start_handler(message):
caption = "Напишите своё сообщение для нас" if message.from_user.llanguage_code == 'ru' else "Write your message for us"
@ -82,7 +88,7 @@ async def chat_members_change(update):
old_member = vars(member_updated["old_chat_member"])
new_member = vars(member_updated["new_chat_member"])
if old_member:
if old_member.status == ChatMemberStatus.KICKED:
if old_member.status == 'KICKED':
Profile.erase(member_updated["from"]["id"])
await handle_left(member_updated)
elif new_member:
@ -98,13 +104,14 @@ async def chat_members_change(update):
await send_message(FEEDBACK_CHAT_ID, text)
async def main(request):
async def main():
# storage revalidation
await handle_startup()
# Получение обновлений
updates = await request.json()
async with ClientSession() as session:
offset = 0 # начальное значение offset
while True:
updates = await fetch(session, f"{api_url}getUpdates?offset={offset}")
for update in updates["result"]:
if "message" in update:
await all_handler(update["message"])
@ -115,12 +122,13 @@ async def main(request):
elif "my_chat_member" in update:
await chat_members_change(update["my_chat_member"])
return web.Response()
offset = update["update_id"] + 1 # обновление offset
await asyncio.sleep(1.0)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
app = web.Application()
app.router.add_post('/your_bot_token', main) # Замените 'your_bot_token' на реальный токен вашего бота
web.run_app(app, host='0.0.0.0', port=3000) # Выберите подходящий порт
# Запуск асинхронного цикла
asyncio.run(main())