77

我正在使用我的机器人来讲述重要新闻,但是当我使用sendMessage该频道时,我收到以下错误:

{"ok":false,"error_code":403,"description":"Error: Forbidden: bot is not a participant of the channel"}

更改日志中,他们提到无法通过客户端向通道发送消息,但是另一种方法是什么?

那么,问题是,如何将我的机器人添加到频道中?

4

4 回答 4

131

现在所有客户端都允许这样做,但这并不简单。
在任何 Telegram 客户端中:

  1. 公开频道信息(在应用标题中)
  2. 选择Administrators
  3. 添加管理员
  4. 联系人列表中不会有机器人,因此您需要搜索它。输入您的机器人的用户名
  5. 单击它,您将成为管理员。

在此处输入图像描述

于 2015-11-03T11:17:08.263 回答
59

这就是我将机器人添加到我的频道并设置通知的方式:

  1. 确保频道是公开的(您可以稍后将其设置为私密)
  2. 添加管理员 > 键入机器人用户名并使其成为管理员
  3. 您的机器人将加入您的频道
  4. 通过设置频道 url 来设置频道 ID,例如

telegram.me/whateverIWantAndAvailable _

频道 ID 将是 @whateverIWantAndAvailable

现在设置您的机器人通过在此处推送消息来发送通知:

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id= @whateverIWantAndAvailable &text=测试

机器人将通知的消息是:测试

我强烈建议像这样的消息的 urlencode

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id= @whateverIWantAndAvailable &text= Testing%20if%20this%20works

在 php 中你可以使用 urlencode("Test if this works"); 在 js 中你可以编码URIComponent("Test if this works");

我希望它有帮助

于 2016-04-14T12:50:23.143 回答
28

截至目前:

  • 只有频道的创建者可以添加机器人。
  • 其他管理员无法将机器人添加到频道。
  • 频道可以是公共的或私人的(没关系)
  • 机器人只能作为管理员添加,不能作为成员添加。*

要将机器人添加到您的频道:

  • 点击频道名称: 在此处输入图像描述

  • 点击管理员: 在此处输入图像描述

  • 点击添加管理员: 在此处输入图像描述

  • 搜索您的机器人,例如 @your_bot_name,然后单击添加:** 在此处输入图像描述

* 在某些平台,如 mac 原生电报客户端,看起来你可以添加 bot 作为成员,但最后它不起作用。
** 机器人不需要在您的联系人列表中。

于 2017-07-09T06:42:56.297 回答
5

您是否使用正确的 chat_id 并在地址中的“bot”之后包含您的 bot 令牌?(api.telegram.org/bot令牌/sendMessage)

这个页面解释了一些关于发送的事情(在“sendMessage”部分)——基本的东西,但我经常忘记基础知识。

去引用:

为了使用 sendMessage 方法,我们需要使用正确的 chat_id。

首先,让我们通过 Telegram 客户端向我们的机器人发送 /start 命令。

发送此命令后,让我们执行 getUpdates 命令。

curl -s \
-X POST \ https://api.telegram.org/bot<token>/getUpdates \ | jq .

响应将如下所示

{   "result": [
     {
       "message": {
        "text": "/start",
         "date": 1435176541,
         "chat": {
           "username": "yourusername",
           "first_name": "yourfirstname",
           "id": 65535
         },
         "from": {
           "username": "yourusername",
           "first_name": "yourfirstname",
           "id": 65535
         },
         "message_id": 1
       },
       "update_id": 714636917
     }    ],   "ok": true }

我们对属性 result.message[0].chat.id 感兴趣,将这些信息保存在别处。

请注意,这只是一个示例,您可能希望设置一些自动处理这些信息现在我们如何发送消息?很简单,让我们看看这个片段。

curl -s \
-X POST \ https://api.telegram.org/bot<token>/sendMessage \
-d text="A message from your bot" \
-d chat_id=65535 \ | jq .

其中chat_id 是之前保存的信息。

我希望这会有所帮助。

于 2015-10-14T14:42:16.090 回答