如何获取私有 Telegram 频道的 chat_id
How to obtain the chat_id of a private Telegram channel
我使用 curl 更新我的 public 频道。这种语法:
curl -X POST "https://api.telegram.org/bot144377327:AAGqdElkZ-77zsPRoAXXXXXXXXXX/sendMessage" -d "chat_id=@MyChannel&text=my sample text"
但是私人频道的chat_id
是什么?这不是你在私人邀请中的那个。
因为现在我们可以在所有方法中传递频道用户名(格式为@channelusername)来代替 chat_id(而不是 forwardMessage 中的 from_chat_id)。但是我管理的私人频道的@channelusername 是什么?
我找到私信的方法了
你应该用一些@channelName
把它转换成public
通过机器人向该频道发送消息API:
https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123
作为响应,您将获得有关您频道的 chat_id 的信息。
{
"ok" : true,
"result" : {
"chat" : {
**"id" : -1001005582487,**
"title" : "Test Private Channel",
"type" : "channel"
},
"date" : 1448245538,
"message_id" : 7,
"text" : "123ds"
}
}
现在您可以将频道转换回私人频道(通过删除频道的 link)并直接向 chat_id "-1001005582487":
https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123
您也可以这样做:
第 1 步。将您的私人频道转换为 public 频道
第 2 步。为此频道设置 ChannelName
第3步。然后你可以把这个频道改成私人
第 4 步。现在使用您在第 3 步中设置的@ChannelName 发送消息
注意:对于第 1 步,您可以将其中一个 public 频道暂时更改为私人频道。
最简单的方法:
只需将您的邀请 link 发送到您的私人频道给 @username_to_id_bot
(https://t.me/username_to_id_bot) 机器人。它将 return 它的 ID。最简单的级别:最大! :)
PS。我不是这个机器人的所有者。
PS 2. Bot不会加入你的群,但要确保安全。如果在使用机器人后对您来说很重要,只需撤销您的旧邀请link。
比较麻烦的方法:
创建频道public不能由用户完成至少有五个publicgroups/channels,所以...问题没有解决。是的,您可以撤销其中一个,但目前我们无法通过其他方式检索聊天 ID。
一个疯狂的解决方案:
- 在网页版 Telegram 使用您的帐户登录:https://web.telegram.org
- 找到您的频道。看看你的 URL。应该是 https://web.telegram.org/#/im?p=c**1055587116**_11052224402541910257
- 从中抓取“1055587116”,并添加“-100”作为前缀。
所以...您的频道 ID 将为“-1001055587116”。奇迹发生了:)
在 Web Channel ID 处找到了解决方案。
最简单的方法是在您的聊天中邀请@get_id_bot,然后输入:
/my_id @get_id_bot
在您的聊天中
不需要将频道转换为 public 然后将其设为私有。
找到您的私人频道的 ID。 (有很多方法可以做到这一点,例如参见 [=10=]。)
curl -X POST "https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage" -d
"chat_id=-100CHAT_ID&text=我的示例文本"
将 xxxxxx:yyyyyyyyyyy 替换为您的机器人 ID,将 CHAT_ID 替换为在步骤 1 中找到的频道 ID。因此,如果频道 ID 为 1234,则为 chat_id=- 1001234.
全部完成!
我的选择是在 Android 上使用流行的 Plus Messenger。
您可以点击频道,然后在群组名称下方的频道信息中,您可以找到频道ID。
超级组和频道 ID 在 Plus Messenger 上看起来像 1068773197。对于 API 上的用法,您可以添加 -100 前缀,这将使它成为 -1001068773197。
- 在 https://web.telegram.org
打开 Telegram Web
- 搜索您的私人频道
- 看看URL。就像是:
https://web.telegram.org/#/im?p=cXXXXXXXXXX_578236787445474833
您的私人频道的 id 是 XXXXXX 部分(在“p=c”和下划线之间)。
要使用它,只需在它前面加上“-100”。因此,如果“XXXXXX”是“4785444554”,您的私人频道 ID 是“-1004785444554”。
打开私密频道,然后:
在 web 客户端:
- 在浏览器中查看URL:
if
例如 https://web.telegram.org/#/im?p=c1192292378_2674311763110923980
then
1192292378是频道ID
在移动设备和桌面设备上:
- 复制link的任何频道的消息:
if
例如 https://t.me/c/1192292378/31
then
1192292378是频道ID(红利:31是消息ID)
在 Plus Messenger for Android:
- 打开频道的信息:
- 频道 ID 显示在上方,就在其名称下方
WARNING
使用 Telegram Bot 时务必 添加 -100 前缀 API:
if
频道 ID 例如 1192292378
then
你应该使用 -1001192292378
您应该添加并使您的机器人成为私人频道的管理员。否则,会发生 找不到聊天 错误。
现在你可以写一个邀请 link 到 bot @username_to_id_bot 你会得到 id:
示例:
它也适用于 public 聊天、频道甚至用户。
我找到了 Python 的 TelegramBotApi 解决方案。也许它适用于其他语言。
我只是将我的机器人添加到私人频道,然后执行此操作:
@your_bot_name hi
在控制台中,我收到包含我需要的所有信息的响应。
我使用了 Telegram.Bot 并通过以下方式获得了 ID:
- 将机器人添加到频道
- 运行 机器人
- 在频道中写点东西(例如,
/authenticate
或 foo
)
Telegram.Bot:
private static async Task Main()
{
var botClient = new TelegramBotClient("key");
botClient.OnUpdate += BotClientOnOnUpdate;
Console.ReadKey();
}
private static async void BotClientOnOnUpdate(object? sender, UpdateEventArgs e)
{
var id = e.Update.ChannelPost.Chat.Id;
await botClient.SendTextMessageAsync(new ChatId(id), $"Hello World! Channel ID is {id}");
}
普通 API:
这转换为 getUpdates method in the plain API, which has an array of update,然后包含 channel_post.chat.id。
其实很简单
您需要做的就是:
- 邀请机器人加入 channel/group(私密与否无关紧要)。
- 发送 channel/group 中的任意消息。
- 在浏览器中转到
getUpdates
APIURL:
https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
现在,看看结果。
您将看到 JSON 输出。
在此 JSON 中查找 chat
数据。通常,最新更新在最后。
{
"ok":true,
"result":[
...
{
...
"my_chat_member":{
"chat":{
"id":-100987654321,
"title":"My Channel",
"type":"channel"
},
...
}
}
]
}
您的聊天 ID 是 -100987654321
。
另一种使用 JavaScript 和 Axios 库的方法。所以你可能想探索 Telegram /getUpdates
的方法 API:
const headers: any = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
timestamp: +new Date(),
}
const options = { headers: { ...headers } }
const urlTelegramBase =
'https://api.telegram.org/bot123456:ABCDEF'
const urlGetUpdates = `${urlTelegramBase}/getUpdates`
const username = 'user_name'
const {
data: { result: messages },
} = await axios.get(urlGetUpdates, options)
const chat_id = messages.find(
messageBlock => messageBlock.message.chat.username === username
).message.chat.id
console.info('chat_id': chat_id)
我使用 curl 更新我的 public 频道。这种语法:
curl -X POST "https://api.telegram.org/bot144377327:AAGqdElkZ-77zsPRoAXXXXXXXXXX/sendMessage" -d "chat_id=@MyChannel&text=my sample text"
但是私人频道的chat_id
是什么?这不是你在私人邀请中的那个。
因为现在我们可以在所有方法中传递频道用户名(格式为@channelusername)来代替 chat_id(而不是 forwardMessage 中的 from_chat_id)。但是我管理的私人频道的@channelusername 是什么?
我找到私信的方法了
你应该用一些@channelName
把它转换成public通过机器人向该频道发送消息API:
https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123
作为响应,您将获得有关您频道的 chat_id 的信息。
{ "ok" : true, "result" : { "chat" : { **"id" : -1001005582487,** "title" : "Test Private Channel", "type" : "channel" }, "date" : 1448245538, "message_id" : 7, "text" : "123ds" } }
现在您可以将频道转换回私人频道(通过删除频道的 link)并直接向 chat_id "-1001005582487":
https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123
您也可以这样做:
第 1 步。将您的私人频道转换为 public 频道
第 2 步。为此频道设置 ChannelName
第3步。然后你可以把这个频道改成私人
第 4 步。现在使用您在第 3 步中设置的@ChannelName 发送消息
注意:对于第 1 步,您可以将其中一个 public 频道暂时更改为私人频道。
最简单的方法:
只需将您的邀请 link 发送到您的私人频道给 @username_to_id_bot
(https://t.me/username_to_id_bot) 机器人。它将 return 它的 ID。最简单的级别:最大! :)
PS。我不是这个机器人的所有者。
PS 2. Bot不会加入你的群,但要确保安全。如果在使用机器人后对您来说很重要,只需撤销您的旧邀请link。
比较麻烦的方法:
创建频道public不能由用户完成至少有五个publicgroups/channels,所以...问题没有解决。是的,您可以撤销其中一个,但目前我们无法通过其他方式检索聊天 ID。
一个疯狂的解决方案:
- 在网页版 Telegram 使用您的帐户登录:https://web.telegram.org
- 找到您的频道。看看你的 URL。应该是 https://web.telegram.org/#/im?p=c**1055587116**_11052224402541910257
- 从中抓取“1055587116”,并添加“-100”作为前缀。
所以...您的频道 ID 将为“-1001055587116”。奇迹发生了:)
在 Web Channel ID 处找到了解决方案。
最简单的方法是在您的聊天中邀请@get_id_bot,然后输入:
/my_id @get_id_bot
在您的聊天中
不需要将频道转换为 public 然后将其设为私有。
找到您的私人频道的 ID。 (有很多方法可以做到这一点,例如参见 [=10=]。)
curl -X POST "https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage" -d "chat_id=-100CHAT_ID&text=我的示例文本"
将 xxxxxx:yyyyyyyyyyy 替换为您的机器人 ID,将 CHAT_ID 替换为在步骤 1 中找到的频道 ID。因此,如果频道 ID 为 1234,则为 chat_id=- 1001234.
全部完成!
我的选择是在 Android 上使用流行的 Plus Messenger。
您可以点击频道,然后在群组名称下方的频道信息中,您可以找到频道ID。
超级组和频道 ID 在 Plus Messenger 上看起来像 1068773197。对于 API 上的用法,您可以添加 -100 前缀,这将使它成为 -1001068773197。
- 在 https://web.telegram.org 打开 Telegram Web
- 搜索您的私人频道
- 看看URL。就像是: https://web.telegram.org/#/im?p=cXXXXXXXXXX_578236787445474833
您的私人频道的 id 是 XXXXXX 部分(在“p=c”和下划线之间)。
要使用它,只需在它前面加上“-100”。因此,如果“XXXXXX”是“4785444554”,您的私人频道 ID 是“-1004785444554”。
打开私密频道,然后:
在 web 客户端:
- 在浏览器中查看URL:
if
例如 https://web.telegram.org/#/im?p=c1192292378_2674311763110923980then
1192292378是频道ID
在移动设备和桌面设备上:
- 复制link的任何频道的消息:
if
例如 https://t.me/c/1192292378/31then
1192292378是频道ID(红利:31是消息ID)
在 Plus Messenger for Android:
- 打开频道的信息:
- 频道 ID 显示在上方,就在其名称下方
WARNING
使用 Telegram Bot 时务必 添加 -100 前缀 API:
if
频道 ID 例如 1192292378then
你应该使用 -1001192292378
您应该添加并使您的机器人成为私人频道的管理员。否则,会发生 找不到聊天 错误。
现在你可以写一个邀请 link 到 bot @username_to_id_bot 你会得到 id:
示例:
它也适用于 public 聊天、频道甚至用户。
我找到了 Python 的 TelegramBotApi 解决方案。也许它适用于其他语言。
我只是将我的机器人添加到私人频道,然后执行此操作:
@your_bot_name hi
在控制台中,我收到包含我需要的所有信息的响应。
我使用了 Telegram.Bot 并通过以下方式获得了 ID:
- 将机器人添加到频道
- 运行 机器人
- 在频道中写点东西(例如,
/authenticate
或foo
)
Telegram.Bot:
private static async Task Main()
{
var botClient = new TelegramBotClient("key");
botClient.OnUpdate += BotClientOnOnUpdate;
Console.ReadKey();
}
private static async void BotClientOnOnUpdate(object? sender, UpdateEventArgs e)
{
var id = e.Update.ChannelPost.Chat.Id;
await botClient.SendTextMessageAsync(new ChatId(id), $"Hello World! Channel ID is {id}");
}
普通 API:
这转换为 getUpdates method in the plain API, which has an array of update,然后包含 channel_post.chat.id。
其实很简单
您需要做的就是:
- 邀请机器人加入 channel/group(私密与否无关紧要)。
- 发送 channel/group 中的任意消息。
- 在浏览器中转到
getUpdates
APIURL:https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
现在,看看结果。
您将看到 JSON 输出。
在此 JSON 中查找 chat
数据。通常,最新更新在最后。
{
"ok":true,
"result":[
...
{
...
"my_chat_member":{
"chat":{
"id":-100987654321,
"title":"My Channel",
"type":"channel"
},
...
}
}
]
}
您的聊天 ID 是 -100987654321
。
另一种使用 JavaScript 和 Axios 库的方法。所以你可能想探索 Telegram /getUpdates
的方法 API:
const headers: any = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
timestamp: +new Date(),
}
const options = { headers: { ...headers } }
const urlTelegramBase =
'https://api.telegram.org/bot123456:ABCDEF'
const urlGetUpdates = `${urlTelegramBase}/getUpdates`
const username = 'user_name'
const {
data: { result: messages },
} = await axios.get(urlGetUpdates, options)
const chat_id = messages.find(
messageBlock => messageBlock.message.chat.username === username
).message.chat.id
console.info('chat_id': chat_id)