polling-fix
This commit is contained in:
parent
908529b5bb
commit
91e2d41cb6
52
main.py
52
main.py
|
@ -1,23 +1,29 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
import signal
|
import signal
|
||||||
import sys
|
from aiohttp import ClientSession
|
||||||
from aiohttp import web
|
from handlers.command_my import send_message
|
||||||
from bot.api import send_message
|
|
||||||
from handlers.routing import handle_routing
|
from handlers.routing import handle_routing
|
||||||
from handlers.callback_unlink import handle_unlink
|
from handlers.callback_unlink import handle_unlink
|
||||||
from handlers.callback_vouch import handle_button
|
from handlers.callback_vouch import handle_button
|
||||||
from handlers.handle_join_request import handle_join_request
|
from handlers.handle_join_request import handle_join_request
|
||||||
from handlers.handle_startup import handle_startup
|
from handlers.handle_startup import handle_startup
|
||||||
from handlers.handle_members_change import handle_join, handle_left
|
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.state import State
|
||||||
from bot.config import FEEDBACK_CHAT_ID
|
from storage import Profile
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
state = State()
|
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):
|
async def command_start_handler(message):
|
||||||
caption = "Напишите своё сообщение для нас" if message.from_user.llanguage_code == 'ru' else "Write your message for us"
|
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"])
|
old_member = vars(member_updated["old_chat_member"])
|
||||||
new_member = vars(member_updated["new_chat_member"])
|
new_member = vars(member_updated["new_chat_member"])
|
||||||
if old_member:
|
if old_member:
|
||||||
if old_member.status == ChatMemberStatus.KICKED:
|
if old_member.status == 'KICKED':
|
||||||
Profile.erase(member_updated["from"]["id"])
|
Profile.erase(member_updated["from"]["id"])
|
||||||
await handle_left(member_updated)
|
await handle_left(member_updated)
|
||||||
elif new_member:
|
elif new_member:
|
||||||
|
@ -98,29 +104,31 @@ async def chat_members_change(update):
|
||||||
await send_message(FEEDBACK_CHAT_ID, text)
|
await send_message(FEEDBACK_CHAT_ID, text)
|
||||||
|
|
||||||
|
|
||||||
async def main(request):
|
async def main():
|
||||||
# storage revalidation
|
# storage revalidation
|
||||||
await handle_startup()
|
await handle_startup()
|
||||||
|
|
||||||
# Получение обновлений
|
async with ClientSession() as session:
|
||||||
updates = await request.json()
|
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"])
|
||||||
|
elif "callback_query" in update:
|
||||||
|
await process_callback(update["callback_query"])
|
||||||
|
elif "join_chat_request" in update:
|
||||||
|
await join_request_handler(update["join_chat_request"])
|
||||||
|
elif "my_chat_member" in update:
|
||||||
|
await chat_members_change(update["my_chat_member"])
|
||||||
|
|
||||||
for update in updates["result"]:
|
offset = update["update_id"] + 1 # обновление offset
|
||||||
if "message" in update:
|
|
||||||
await all_handler(update["message"])
|
|
||||||
elif "callback_query" in update:
|
|
||||||
await process_callback(update["callback_query"])
|
|
||||||
elif "join_chat_request" in update:
|
|
||||||
await join_request_handler(update["join_chat_request"])
|
|
||||||
elif "my_chat_member" in update:
|
|
||||||
await chat_members_change(update["my_chat_member"])
|
|
||||||
|
|
||||||
return web.Response()
|
await asyncio.sleep(1.0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
|
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
|
||||||
|
|
||||||
app = web.Application()
|
# Запуск асинхронного цикла
|
||||||
app.router.add_post('/your_bot_token', main) # Замените 'your_bot_token' на реальный токен вашего бота
|
asyncio.run(main())
|
||||||
web.run_app(app, host='0.0.0.0', port=3000) # Выберите подходящий порт
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user