7

I am using Telegram API to develop a program to join Telegram groups or channel by their links.

Methods that join group or channel (e.g. channels.joinChannel) need chat_id or channel_id, but I have only the links of the groups or channels (e.g. @channel_username or https://t.me/channel_username or https://t.me/joinChat/xxxxx)

How can I obtain chat_id or channel_id of a group or channel having its link?

P.S: I'm not the admin of these groups or channels.

2 Answers 2

9

I found the answer:

First we must use checkChatInvite method. It uses the chat link as input parameter and outputs the chat specifications includes chat_id.

Then we use joinChat method method. it uses the chat_id got from the previous step and joins to that group or channel.

1

Selected answer seems to be outdated. In recent versions there is checkChatInviteLink call, but it requires the chat url to start with https://t.me/joinchat/

If you want to resolve a link like https://t.me/chatname, you can use searchPublicChat API call.

This works for me (using 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']

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.