如何获取私人电报频道的chat_id?


90

我使用curl更新我的公共频道。这种语法:

curl -X POST "https://api.telegram.org/bot144377327:AAGqdElkZ-77zsPRoAXXXXXXXXXX/sendMessage" -d "chat_id=@MyChannel&text=my sample text"

那是什么 chat_id是私人频道?这不是您私人邀请中的那个。

因为现在我们可以在所有方法中(而不是forwardMessage中的from_chat_id)在chat_id处传递通道用户名(格式为@channelusername)。但是我管理的私人频道的@channelusername是什么?


为什么需要频道的chat_id?频道的所有发送方法都使用字符串“ @channel_name”
Stas Parshin

嗨@pengrad与curl命令,我问我的机器人向MyChannel发送消息。对于公共频道,chat_id等于其URL的最后一部分:在telegram.me/MyChannel中,chat_id为“ MyChannel”。私人频道只有邀请网址,例如telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ,而chat_id不是“ AJhkwTviqL_7HWcGZgottQ”。因此,我正在寻找私人频道的chat_id。
aborruso

有没有办法不用电报就可以打自由出租车吗?
Shahid Karimi

Answers:


176

我找到了在私人频道上写作的方法。

  1. 您应该使用一些@channelName将其转换为public
  2. 通过Bot API向此频道发送消息

    https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123

  3. 作为回应,您将获得有关您频道的chat_id的信息。

    {“ ok”:true,“ result”:{“ chat”:{ “ id”:-1001005582487, “ title”:“ Test Private Channel”,“ type”:“ channel”},“ date”:1448245538,“ message_id”:7,“文本”:“ 123ds”}}

  4. 现在,您可以将频道转换回私人状态(通过删除频道的链接),然后直接将消息发送到此chat_id“ -1001005582487”

    https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123


1
我对你的问题投了赞成票,谢谢你的详细信息!我很困惑在这里投票给您答案,因为这更像是一种黑客行为:-)。顺便说一句,我的一般问题是:私人频道需要什么?也许组(最近的超组)是更好的方法?在facs中,电报文档尚不清楚私人渠道。
Giorgio Robino

1
我尝试了一下,但只工作了几分钟。我想是因为一旦频道变为私有频道,就会有一个仍然可以公开访问的时间范围:此后,如果您尝试将其重新设置为公共频道,则必须重新定义频道ID。
roibeart '16

1
您应该澄清一下,我们需要在第一个斜杠旁边的bot旁边提交我们的api令牌。反正谢谢!这是一个很好的解决方案。
弗朗哥·马尔多纳多

106

存在至少5个公共组/频道的用户无法将频道设为公开,因此...问题未解决。是的,您可以撤消其中之一,但是目前,我们无法以其他方式检索聊天ID。

撤消

有人找到解决方案了吗?

更新

我发现了疯狂的解决方案:

  1. 使用您的帐户登录网络版的Telegram: https //web.telegram.org
  2. 查找您的频道。看到您的网址,应该像https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. 从中抓取“ 1055587116”,并添加“ -100”作为前缀。

因此...您的频道ID为“ -1001055587116”。魔术发生了:)

在这里找到解决方案:https : //github.com/GabrielRF/telegram-id#web-channel-id


1
甚至我的新频道也将private / public / private设置为set @channel_username,但是虽然是私有频道,但@channel_username对我来说不起作用!我使用了您发布的解决方案,并已工作
MohaMad

先生,您是生活的鉴赏家!
主宰

1
我认为此-100前缀不会永远有效,但是4年后它仍然有效!
Ali Tou

1
@AliTou Pavel Durov刚刚发现了此评论,并决定不删除功能,啊哈:)很高兴听到,它仍然可以工作:)
Nigrimmist

31

最简单的方法是在聊天中邀请@get_id_bot,然后键入:

/my_id @get_id_bot

聊天中


3
谢谢,最好的答案!
realmag777 '17

1
根据我的测试,应该在频道中将bot添加为管理员。
Morteza Ziyae

是的,似乎必须添加为管理员
Stefan Reich

3
这仍然是当前的吗?/ my_id @ ...似乎什么也没做(除了出现该消息外)
wal,

@wal我通过2种方法获得了ID,/start @get_id_bot而且/my_id @get_id_bot空间似乎很重要。添加@get_id_bot为成员,仅以管理员身份授予职位。一旦获得ID,为了安全起见,请将其删除。
rahoolm

21

打开私人频道,然后:


WARNING使用Telegram Bot API时,请确保添加-100前缀

  • if 频道ID例如是1192292378
  • then您应该使用-1001192292378

1
这是获取频道ID的最简单正确的方法,谢谢!
托尼

4

您可以这样做:

第1步)将您的私人频道转换为公共频道

第2步)为此频道设置ChannelName

步骤3)然后,您可以将此频道更改为“私人”

步骤4)现在使用在步骤3中设置的@ChannelName发送消息

注意:对于第1步,您可以在短时间内将一个公共频道更改为私人频道。


3

无需将频道转换为公共频道,然后将其设为私有。

  1. 找到您的私人频道的ID。(有许多方法可以做到这一点,例如,参见此SO答案

  2. curl -X POST“ https://api.telegram.org/botxxxxxx:yyyyyyyyyy/sendMessage ” -d“ chat_id = -100 CHAT_ID&text =我的示例文本”

    将xxxxxx:yyyyyyyyyy替换为您的漫游器ID,并将CHAT_ID替换为在步骤1中找到的通道ID。因此,如果通道ID为1234,则它将为chat_id = -1001234。

全做完了!



1

现在,您可以向bot @username_to_id_bot编写邀请链接,您将获得ID:

例: 在此处输入图片说明

也适用于公共聊天,频道甚至用户



-1

需要答案:

您应该添加BOT并使其成为PRIVATE通道的管理员,否则chat not found会发生错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.