Получение объектов канала / чата

#python #telegram-bot #telethon #telegram-webhook

#python #telegram-бот #телемарафон #telegram-webhook

Вопрос:

Я хочу, чтобы кто-нибудь мог добавить моего бота на свой канал. Для этого я хочу сохранить webhook (chat.id ) канала в базе данных.

Мой код:

 async with bot.conversation(chat.id) as conv:
        await conv.send_message("Which channel you want add? (invite link of the channel):")
        resp = await conv.get_response()
        hookName = resp.message

        hook = await bot.get_entity(hookName)
        print(hook)
        print(hook.chat_id)
        print(hook.user_id)
 

Я получаю эту ошибку в строке с get_entity, когда использую ссылку invite:

 telethon.errors.rpcerrorlist.BotMethodInvalidError: The API access for bot users is restricted. The method you tried to invoke cannot be executed as a bot (caused by CheckChatInviteRequest)
 

И эта ошибка, когда я использую channelname:

 ValueError: No user has "channelname" as username
 

Мне интересно, почему это работает, когда я жестко задаю название канала, но не в качестве ответа…

Было бы неплохо, если бы пользователь мог просто ввести имя чата или название канала или ссылки на приглашения, и я получаю идентификатор из этого.

Есть ли какой-нибудь способ сделать это?

Спасибо 🙂

Комментарии:

1. Используйте client.get_peer_id , он будет использовать кеш (разрешение имен пользователей обходится дорого) и должен извлекать идентификатор из приглашающих ссылок без выполнения запросов.

2. Спасибо тебе, совершенство! Есть ли какая-либо возможность иметь реальный уникальный идентификатор? Например, когда я добавляю «Testroom», я не получаю свой канал (из-за того, что их много с таким именем, потому что это не unipe)… и когда я пытаюсь использовать ссылку приглашения, я получаю эту ошибку: AttributeError: 'str' object has no attribute 'SUBCLASS_OF_ID'

3. Имена чатов ненадежны. Имена пользователей загружаются из кэша. Ссылки на приглашения всегда должны работать. Если вы считаете, что это ошибка, откройте отчет в репозитории GitHub с четкими шагами воспроизведения.

4. Вы уверены, что ссылка на приглашение должна работать? В общественных группах у меня нет этой проблемы

5. Они должны , но если они этого не делают, это может быть ошибкой.