在Telegram API中获取具有聊天链接的chat_id

时间:2017-03-29 03:42:10

标签: api telegram

我正在使用Telegram API开发一个程序,通过其链接加入Telegram组或频道。

加入群组或频道的方法(例如channels.joinChannel)需要chat_idchannel_id,但我只有群组或频道的链接(例如@channel_username或https://t.me/channel_usernamehttps://t.me/joinChat/xxxxx

如何获得有链接的群组或频道的chat_idchannel_id

P.S:我不是这些团体或渠道的管理员。

2 个答案:

答案 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']