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

时间:2015-11-22 19:05:02

标签: telegram-bot

我使用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是什么?

13 个答案:

答案 0 :(得分:122)

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

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

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

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

    {   “好的”:是的,   “结果”:{     “聊天”:{       “id”: - 1001005582487,       “标题”:“测试私人频道”,       “类型”:“频道”     },     “date”:1448245538,     “message_id”:7,     “text”:“123ds”   } }

  5. 现在您可以将频道转换为私有(通过删除频道的链接)并将消息直接发送到此chat_id“-1001005582487”

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

答案 1 :(得分:70)

使用至少5个公共组/频道的用户无法公开频道,所以......问题没有解决。是的,您可以撤销其中一个,但就目前而言,我们无法以其他方式检索聊天ID。

revoke

是否有人为此案找到了解决办法?

<强>更新

我找到了疯狂的解决方案:

  1. 在Telegram网络版的帐户下登录:https://web.telegram.org
  2. 找到您的频道。请参阅您的网址,它应该是https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. 从中获取“1055587116”,并添加“-100”作为前缀。
  4. 所以...你的频道ID将是“-1001055587116”。魔术发生了:))

    此处找到解决方案:https://github.com/GabrielRF/telegram-id#web-channel-id

答案 2 :(得分:18)

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

/my_id@get_id_bot

在聊天中

答案 3 :(得分:5)

其实很简单。

您需要做的就是:

  1. 邀请聊天机器人加入频道/群组(无论是否私密)。
  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

答案 4 :(得分:3)

你可以做到这一点:

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

步骤2)设置此频道的频道名称

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

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

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

答案 5 :(得分:3)

打开私人频道,然后:


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

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

答案 6 :(得分:2)

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

  1. 找到您的私人频道的ID。 (有很多方法可以 这样做,例如见this SO answer

  2. 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。

  3. 全部完成!

答案 7 :(得分:1)

您的私人频道的ID为XXXXXX部分(在“ p = c”和下划线之间)。 要使用它,只需在它前面添加“ -100”。因此,如果“ XXXXXX”为“ 4785444554”,则您的私人频道ID为“ -1004785444554”。

答案 8 :(得分:1)

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

示例: enter image description here

还可以用于公共聊天,频道甚至用户

答案 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)

需要答案:

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

答案 11 :(得分:0)

找到了适用于python的TelegramBotApi解决方案。 也许会适用于其他语言。

我只是将我的漫游器添加到私有频道,然后执行以下操作:

@your_bot_name hi

在控制台中,我得到了我需要的所有信息的响应。

答案 12 :(得分:0)

我使用 Telegram.Bot 并通过以下方式获取 ID:

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

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:

这转化为普通 API 中的 getUpdates 方法,它有一个 Update 数组,然后包含 channel_post.chat.id