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.
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.
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']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With