如何获得私人电报频道的 chat_id

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

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

但是私人频道的 chat_id是什么呢? 它不是你在私人邀请中使用的那个。

因为现在我们可以在所有方法中传递一个通道用户名(格式为@channel elusername) ,代替 chat _ id (而不是 forwardMessage 中的 from _ chat _ id)。但是我管理的私人频道的@channel 用户名是什么呢?

236389 次浏览

我找到了通过私人渠道写作的方法。

  1. 您应该使用一些@channel elName 将其转换为 public

  2. 通过 Bot API 向这个频道发送消息:

    Https://api.telegram.org/bot111:222/sendmessage?chat_id=@channelname&text=123

  3. 作为响应,您将获得通道的 聊天 ID信息。

    {
    "ok" : true,
    "result" : {
    "chat" : {
    **"id" : -1001005582487,**
    "title" : "Test Private Channel",
    "type" : "channel"
    },
    "date" : 1448245538,
    "message_id" : 7,
    "text" : "123ds"
    }
    }
    
  4. 现在,您可以将通道转换回 private (通过删除通道的链接) ,并直接向 聊天 ID“-1001005582487”发送消息:

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

你也可以这样做:

步骤1。将您的私人频道转换为公共频道

步骤2。为此频道设置 ChannelName

步骤3。然后您可以将此频道更改为 private

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

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

最简单的方法:

只要发送您的邀请链接到您的私人频道 @username_to_id_bot(https://t.me/username_to_id_bot)机器人。它会返回它的 ID。最简单的级别: 最大值!:)

另外,我不是这个机器人的主人。

PS2.机器人不会加入你的小组,但要确保安全。只要撤销你的旧邀请链接,如果它是事项后,你使用机器人。

更麻烦的方法是:

至少存在五个公共群组/频道的用户无法实现频道公开,因此... 这个问题没有得到解决。是的,您可以撤销其中之一,但是现在,我们不能以其他方式检索聊天 ID。

Revoke

另一个可行的解决方案 :

  1. 以你的帐户登入网上版本的电报: https://web.telegram.org
  2. 更新(感谢@Julian Espinel) 找到你的频道,查看你的网址,它应该类似于“一个 href =”https://web.telgram.org/z/# -1543515057“ rel =”noReferrer“ https://web.telegram.org/z/#-1543515057
  3. 从中选择“1543515057”,并添加“ -100”作为前缀。

所以... ... 您的频道 ID 将是“-1001543515057”。奇迹发生了:)

网络频道 ID发现了溶液。

最简单的方法是在聊天中邀请@get _ id _ bot,然后输入:

/my_id @get_id_bot

在你的聊天室里

不需要将信道转换为公共信道,然后将其私有化。

  1. 查找私有通道的 id (有许多方法可以做到这一点,例如,请参阅 这个堆栈溢出的答案。)

  2. Curl-x POST“ https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendmessage" ;-d “ chat _ id = -100CHAT _ ID & text = my sample text”

将 xxxxx: yyyyyyyyyyy 替换为您的 bot id,并将 CHAT _ ID 替换为步骤1中找到的通道 id。因此,如果通道 id 是1234,那么它就是 chat _ id =-1001234。

好了!

我的选择是在 Android 上使用流行的 还有信使

您可以单击通道,在组名称下面的 频道信息中,您可以找到通道 ID。

在 Plus Messenger 上,超级组和通道 ID 看起来像1068773197。对于在 API 上的使用,可以使用前缀 -100,这样就是 -1001068773197。

私有通道的 id 是 XXXXXX 部分(在“ p = c”和下划线之间)。

要使用它,只需在它前面加上“-100”。因此,如果“ XXXXXX”是“478544554”,那么您的私人频道 ID 是“ -100478544554”。

打开私人频道,然后:


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

  • 例如,通道 ID 为1192292378
  • 你应该使用 -1001192292378

您应该添加并使您的 bot 成为 二等兵通道的 管理人,否则就会发生 找不到聊天记录错误。

现在你可以写一个 bot@username _ to _ id _ bot 的邀请链接,然后你就会得到 id:

例如:

Enter image description here

它还可以用于公共聊天、频道甚至用户。

我找到了针对 Python 的 TelegramBotApi 解决方案,也许对其他语言也适用。

我只要把我的机器人加到私人频道,然后这样做:

@your_bot_name hi

在控制台中,我得到一个包含所有我需要的信息的响应。

我使用 Telegram. Bot 电报机器人并通过以下方式获得 ID:

  1. 将机器人添加到频道
  2. 运行机器人
  3. 在频道中写入一些内容(例如,/authenticatefoo)

电报,机器人:

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 中的 GetUpdate方法,它有一个 更新数组,然后包含 Channel _ post. chat. id

其实很简单。

你需要做的就是:

  1. 邀请 bot 访问频道/组(私有与否并不重要)。
  2. 在频道/组中发送任何消息。
  3. 在浏览器中转到 getUpdates API URL:
    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库的方法。所以你可能想探索电报 API 的 /getUpdates方法:

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 https://api.telegram.org/bot{your_bot_token}/getUpdates

但是你已经把你的机器人加入了你的私人频道。您将在 json 响应中获得您的私有频道聊天 ID。