def chat_prepare(client: TelegramClient, chat_to_work):
messages = client.get_messages(chat_to_work, limit=1)
if len(messages) == 0:
# print(f'В чате {chat_to_work} не удается получить номера сообщений')
return -1
m1 = messages[0].id
return m1
The asyncio event loop must not change after connection
обычно возникает, когда вы пытаетесь изменить цикл событий asyncio после того, как он уже был запущен. Или пытаетесь запустить асинхронные операции вне асинхронного контекста или пытаетесь изменить цикл событий после его запуска.import asyncio
from telethon import TelegramClient
class TelegramBot:
def __init__(self, api_id, api_hash, session_name):
self.client = TelegramClient(session_name, api_id, api_hash)
async def start(self):
await self.client.start()
async def chat_prepare(self, chat_to_work):
messages = await self.client.get_messages(chat_to_work, limit=1)
if len(messages) == 0:
return -1
m1 = messages[0].id
return m1
async def run(self, chat_to_work):
await self.start()
result = await self.chat_prepare(chat_to_work)
print(f'Result: {result}')
# Пример использования
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
session_name = 'YOUR_SESSION_NAME'
chat_to_work = 'YOUR_CHAT_ID'
bot = TelegramBot(api_id, api_hash, session_name)
# Запуск асинхронного контекста
asyncio.run(bot.run(chat_to_work))