#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. Они должны , но если они этого не делают, это может быть ошибкой.