如何将我的漫游器添加到频道?


71

我正在使用我的漫游器来告知重要新闻,但是当我使用sendMessage该频道时,出现以下错误:

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

他们在变更日志中提到无法通过客户端将消息发送到通道,但是还有另一种方法吗?

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


Answers:


118

现在,所有客户都可以这样做,但这并不简单。
在任何电报客户端中:

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

在此处输入图片说明


您知道如何拥有专用频道的@channelusername吗?我是它的管理员。谢谢
aborruso 2015年

@aborruso我正在尝试找到方法...)
Stas Parshin 2015年

@aborruso好的,看看您的原始问题
Stas Parshin

@aborruso仅公共频道具有用户名(API限制)
Groosha

3
对于没有用户名的频道,只需给它一个,然后用漫游器发送消息即可,其结果sendMessage应包含chat_id,删除频道名称后即可使用。
Johannes Kuhn

52

这是我向频道添加漫游器并设置通知的方式:

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

telegram.me/随便什么

频道ID为 @whateverIWantAndAvailable

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

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

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

我强烈建议该消息的urlencode

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id= @whateverIWantAndAvailable与文本=测试%20if%20this%20works

在php中,您可以使用urlencode(“测试是否可行”); 在js中,您可以编码URIComponent(“测试是否可行”);

希望对您有所帮助


如何将其设置为私人?
CodeGuru

@CodeGuru-如果您是频道管理员,则可以将此频道设置为电报桌面或移动客户端中的私人频道。对我来说,这是通过这种方式进行的-我首先将频道设为公开,通过漫游器向该频道发送消息,然后我将频道设为私有,而漫游器仍可以在其中发送消息。因此,我认为它以某种方式起作用。但是一段时间之后,它停止工作了。因此,我认为漫游器无法将消息发送到私人渠道
vodolaz095

有一些疯狂的解决这里提到- stackoverflow.com/a/39943226/1885921
vodolaz095

24

截至目前:

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

要将漫游器添加到您的频道:

  • 点击频道名称: 在此处输入图片说明

  • 点击管理员: 在此处输入图片说明

  • 点击添加管理员: 在此处输入图片说明

  • 搜索您的机器人,例如@your_bot_name,然后点击添加:** 在此处输入图片说明

*在某些平台(例如mac native Telegram客户端)中,您似乎可以将bot添加为成员,但最终将无法正常工作。
**该机器人不需要在您的联系人列表中。


从Desktop(linux),它告诉我“此用户不是该频道的订阅者。将其添加到频道并提升为管理员吗?” 我说是的,什么也没有发生(没有错误消息,但没有添加)。从移动设备上,我确实收到一条错误消息,说“您不能将此用户添加为管理员,因为他们不是成员,并且您不能添加他们”,这是胡说八道。任何人?(该频道已经有200个以上的订阅者,因此无论如何我都无法添加用户,但这不应该阻止我添加机器人)
matteo

@matteo您是频道的创建者吗?
apadana '19

@matteo我有同样的问题。您对此有任何解决方案吗?
MortezaE

1
@MortezaE原来,频道的创建者没有给我所有必需的权限。我现在不记得详细信息,但是错误消息的信息不足,并且在台式机上完全不存在,这都是Telegram的错。获得所有必需的权限后,它便解决了该问题。
马特奥

1
详细信息如下:我具有添加管理员的权限,但没有添加成员的权限。在移动设备上,当尝试将机器人添加为成员时,它给了我错误的错误消息,告诉我我不能,因为已经有200个成员(明显的废话,不应该适用于机器人),而实际上原因是我没有首先没有获得许可。正如我所说,台式机上没有任何错误消息
matteo

4

您是否使用了正确的chat_id,并在地址中的“机器人”之后添加了机器人的令牌?(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是之前保存的信息。

希望对您有所帮助。


我可能会错误地发布问题..您需要了解我的要求...我有可以正常发送sendMessage到用户的代码..我正在谈论将消息发送到Channels ....请

抱歉-我没有注意。看来您要执行的操作尚未实现(根据您已经查看过的变更
JGR 2015年

@Rosini确认具有漫游器支持-您尚无法在频道中向管理员添加漫游器,而这是漫游器可以发布到频道的唯一方法。
JGR

这个chat_id会保持不变吗?我是否必须定期或针对每条消息执行getUpdates?
巴尔基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.