我使用curl来更新我的公共频道。这种语法:
>curl -X POST "https://api.telegram.org/bot144377327:AAGqdElkZ-77zsPRoAXXXXXXXXXX/sendMessage" -d "chat_id=@MyChannel&text=my sample text"
但私人频道的chat_id
是什么?这不是私人邀请中的那个。
因为现在我们可以在所有方法中代替chat_id传递频道用户名(格式为@channelusername)(而不是在forwardMessage中传递from_chat_id)。但是我管理的私人频道的@channelusername是什么?
答案 0 :(得分:122)
我找到了在私人频道写作的方式。
通过Bot API向此频道发送消息
https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123
作为回复,您将获得有关您频道的chat_id的信息。
{ “好的”:是的, “结果”:{ “聊天”:{ “id”: - 1001005582487, “标题”:“测试私人频道”, “类型”:“频道” }, “date”:1448245538, “message_id”:7, “text”:“123ds” } }
现在您可以将频道转换为私有(通过删除频道的链接)并将消息直接发送到此chat_id“-1001005582487”
https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123
答案 1 :(得分:70)
使用至少5个公共组/频道的用户无法公开频道,所以......问题没有解决。是的,您可以撤销其中一个,但就目前而言,我们无法以其他方式检索聊天ID。
是否有人为此案找到了解决办法?
<强>更新强>
我找到了疯狂的解决方案:
所以...你的频道ID将是“-1001055587116”。魔术发生了:))
此处找到解决方案:https://github.com/GabrielRF/telegram-id#web-channel-id
答案 2 :(得分:18)
最简单的方法是在聊天中邀请@get_id_bot,然后输入:
/my_id@get_id_bot
在聊天中
答案 3 :(得分:5)
其实很简单。
您需要做的就是:
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
。
答案 4 :(得分:3)
你可以做到这一点:
步骤1)将您的私人频道转换为公共频道
步骤2)设置此频道的频道名称
步骤3)然后您可以将此频道更改为私人
步骤4)现在使用您在步骤3中设置的@ChannelName发送消息
注意:对于步骤1,您可以将您的一个公共频道更改为私人短时间。
答案 5 :(得分:3)
打开私人频道,然后:
在网络客户端上:
if
,例如https://web.telegram.org/#/im?p=c1192292378_2674311763110923980 then
1192292378 是频道ID 在移动和桌面上:
if
,例如https://t.me/c/1192292378/31 then
1192292378 是频道ID(奖金: 31 是消息ID)在 Plus Messenger 上for Android:
WARNING
请确保在使用Telegram Bot API时添加-100前缀:
if
的频道ID例如为1192292378 then
,您应该使用 -1001192292378 答案 6 :(得分:2)
无需将频道转换为公开,然后将其设为私有。
找到您的私人频道的ID。 (有很多方法可以 这样做,例如见this SO answer)
curl -X POST&#34; https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage&#34; -d &#34; chat_id = -100 CHAT_ID&amp; text =我的示例文字&#34;
用您的机器人ID替换xxxxxx:yyyyyyyyyyy,并将CHAT_ID替换为步骤1中找到的通道ID。因此,如果通道ID为1234,则为chat_id = -1001234。
全部完成!
答案 7 :(得分:1)
您的私人频道的ID为XXXXXX部分(在“ p = c”和下划线之间)。 要使用它,只需在它前面添加“ -100”。因此,如果“ XXXXXX”为“ 4785444554”,则您的私人频道ID为“ -1004785444554”。
答案 8 :(得分:1)
答案 9 :(得分:0)
我要做的选择是使用Android上流行的Plus Messenger。 Play商店链接为:https://play.google.com/store/apps/details?id=org.telegram.plus&hl=en
您可以单击“频道”,然后在组名下方的“频道信息”中找到频道ID。
Supergroup和Channel ID在加上Messenger时看起来像1068773197。对于您在API上的用法,您可以在-100前面加上前缀-1001068773197。
答案 10 :(得分:0)
您应添加chat not found
错误。
答案 11 :(得分:0)
找到了适用于python的TelegramBotApi解决方案。 也许会适用于其他语言。
我只是将我的漫游器添加到私有频道,然后执行以下操作:
@your_bot_name hi
在控制台中,我得到了我需要的所有信息的响应。
答案 12 :(得分:0)
我使用 Telegram.Bot
并通过以下方式获取 ID:
/authenticate
或 foo
)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
方法,它有一个 Update
数组,然后包含 channel_post.chat.id