Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a Telegram Channel Id without sending a message to it

Is there any way to find a telegram channel id without sending a message to it ?

Right now I go this way and find the channel id by calling this URL in my code and get the JSON as result: https://api.telegram.org/bot???????/sendMessage?chat_id=@?????&text=123

However, this cause sending the message "123" to the channel which is not good.

like image 559
MohamadNik Avatar asked Jan 17 '17 06:01

MohamadNik


People also ask

How can I get Telegram Channel chat ID?

Go to https://web.telegram.org. Open a group chat. Look at the URL at the top of the screen. The digits behind the letter “g” are actually your chat ID.

How can I get Telegram channel without Telegram?

The only possible way to join private telegram group without informing the admin is by using the invitation or join link and you can only get this link through someone in the group already. Without this you must pass through the admin before you can join any private group.

How can I access private Telegram channel without link?

But this process is different for android and iOS, On Android the user will find a search option (magnifying glass) on clicking which you can type the name of the channel and join the channel, while on iPhone you will need to go to the chats tab where you need to search for the channel by its name and join.


3 Answers

Check this link for help.
It is using web telegram url param info.

Adding details from the referred link:

  1. log in web telegram
  2. Click on the target channel then you will find the url displayed on your browser.

If it's a public channel, the ID is @name of the channel.

If it's a private channel then the url must be similar to:
https://web.telegram.org/#/im?p=c1018013852_555990343349619165
For this case, the channel ID would be 1018013852.
It's important to know that channel's IDs are always negative and 13 characters long!
So add -100 to it, making the correct ID -1001018013852.

like image 67
xuanzhui Avatar answered Oct 11 '22 05:10

xuanzhui


You Can use Web Telegram to see each channel id in link of that page in your explorer
or

Just Simply Forward a message from your channel to This Bot: (https://telegram.me/getidsbot)

like image 29
Saeed Heidarizarei Avatar answered Oct 11 '22 06:10

Saeed Heidarizarei


Fixing @scruel's answer:

In [1]: api_id = ...                                                                                                                                  

In [2]: api_hash = '...'                                                                                                     

In [3]: channelLink = 'https://t.me/BTCST_Community_EN'                                                                                                   

In [4]: from telethon import TelegramClient, events                                                                                                       

In [5]: client = TelegramClient('test', api_id, api_hash)                                                                                                 

In [6]: client.start()                                                                                                                                    
Out[6]: <telethon.client.telegramclient.TelegramClient at 0x7fc90c352290>

In [7]: entity = await client.get_entity(channelLink)                                                                                                     

In [8]: channelId = '-100' + str(entity.id)                                                                                                               

In [9]: channelId                                                                                                                                        
Out[9]: '-1001236496320'

Here's a CLI util to do it:

#!env/bin/python

import sys
import asyncio

from telethon import TelegramClient

import config

async def channel_id_from_link(client, channel_link):
    return "-100" + str((await client.get_entity(channel_link)).id)

async def main(channel_link):
    async with TelegramClient(
        "test", config.api_id, config.api_hash
    ) as client:
        channel_id = await channel_id_from_link(client, channel_link)

    return channel_id

if __name__ == "__main__":
    channel_link = sys.argv[1]
    channel_id = asyncio.run(main(channel_link))
    print(channel_id)

Test:

> ./TelegramChannelId.py https://t.me/binance_api_english
-1001134190352
like image 32
P i Avatar answered Oct 11 '22 06:10

P i