我正在使用Telegram API开发一个程序,通过其链接加入Telegram组或频道。
加入群组或频道的方法(例如channels.joinChannel)需要chat_id
或channel_id
,但我只有群组或频道的链接(例如@channel_username或https://t.me/channel_username或https://t.me/joinChat/xxxxx)
如何获得有链接的群组或频道的chat_id
或channel_id
?
答案 0 :(得分:7)
我找到了答案:
首先我们必须使用checkChatInvite
方法。它使用聊天链接作为输入参数,并输出包含chat_id
的聊天规范。
然后我们使用joinChat
方法。它使用从上一步获得的chat_id
并加入该组或频道。
答案 1 :(得分:0)
所选答案似乎已过时。在最新版本中,存在checkChatInviteLink调用,但是它要求聊天网址以https://t.me/joinchat/
如果您想解析诸如https://t.me/chatname之类的链接,则可以使用searchPublicChat API调用。
这对我有用(使用https://github.com/alexander-akhmetov/python-telegram):
def resolve_channel_link(tg, link):
if link.startswith('https://t.me/'):
link = link.split('/')[-1]
else:
raise RuntimeError('cant parse link', link)
r = tg.call_method('searchPublicChat', [{'username', link}])
r.wait()
if r.error:
raise RuntimeError(r.error_info)
assert(r.update['@type'] == 'chat')
return r.update['id']