@CreeHk

Как aiogram боту взять даные из pyrogram юзербота?

userbot.py
# pyrogram

app = Client("creehk24", parse_mode=ParseMode.HTML)

def get_chat_name(chat_id)
    chat = await app.get_chat(chat_id)
    if chat.type == ChatType.PRIVATE:
        return f'{chat.first_name} {chat.last_name}'
    else:
        return {chat.title}


bot.py
# aiogram

import userbot

bot = Bot(token=config.TOKEN, parse_mode=types.ParseMode.HTML)
dp = Dispatcher(bot, storage=MemoryStorage())

@dp.message_handler()
async def get_name_from_id(message: types.Message):
    chat_name = userebot.get_chat_name(chat_id = message.text)
    await message.answer(chat_name)

executor.start_polling(dp, skip_updates=True)


когда срабатывает хендлер аиограм бота вылезает ошибка:
raise ConnectionError("Client has not been started yet")
ConnectionError: Client has not been started yet


я пробовал сначала включить юзерботв, потом включить, вообще не включать, но ошибка остаётся таким
  • Вопрос задан
  • 2259 просмотров
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
ConnectionError: Client has not been started yet

Вы получаете ошибку (очевидно, внутри функции get_chat_name), которая говорит о том, что клиент Pyrogram не запущен. Вы должны запустить клиент, прежде чем вызывать методы Telegram API, после чего его можно остановить. Это можно сделать с помощью менеджера контекста async with:
app = Client("creehk24", parse_mode=ParseMode.HTML)

def get_chat_name(chat_id)
    async with app:
        chat = await app.get_chat(chat_id)
    if chat.type == ChatType.PRIVATE:
        return f'{chat.first_name} {chat.last_name}'
    else:
        return chat.title

или с помощью Client.start() и Client.stop():
app = Client("creehk24", parse_mode=ParseMode.HTML)

def get_chat_name(chat_id)
    await app.start()
    chat = await app.get_chat(chat_id)
    await app.stop()
    if chat.type == ChatType.PRIVATE:
        return f'{chat.first_name} {chat.last_name}'
    else:
        return chat.title
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы