skip to Main Content

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


  1. Chosen as BEST ANSWER

    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.


  2. 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']
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search