在电报上发送消息:“禁止:机器人不是超级群聊天的成员”或“禁止:机器人不是频道聊天的成员”

Ste*_*ane 7 telegram telegram-bot

我正在尝试在电报聊天中发送消息。我希望电报设置只能通过官方 UI 完成,因为我希望它可能由最终用户完成。

这是我所做的电报设置:

  • XXXXXXX_bot通过获取令牌与 Botfather 创建了机器人:没问题
  • 我创建了一个频道:
    • 点击“新频道”
    • 频道名称:TestChannel
    • 点击下一步”
    • 选择“私人频道”
    • 点击“保存”
    • 添加我的机器人XXXXXXX_bot
    • 点击“设为管理员”
    • 点击“保存”
  • 我创建聊天:
    • 打开通道TestChannel
    • 在频道菜单上,选择“管理频道”
    • 在讨论中点击“添加群组”
    • 点击“创建新组”
    • 团队名字:TestChannelChat
    • 点击“创建”
    • 点击“保存”
  • 我将机器人添加到新组中:
    • 打开群组TestChannelChat
    • 在右侧面板上,我单击“添加成员”
    • 添加我的机器人XXXXXXX_bot
    • 点击“添加”
    • 右键单击聊天中新添加的用户,然后选择“晋升为管理员”
    • 点击“保存”

以下是频道管理员的设置:

在此输入图像描述

最终,电报 UI 中的聊天/群组设置如下:

在此输入图像描述

我进行以下 http 调用:

GET https://api.telegram.org/botXXXXXXTOKENXXXXXXX/sendMessage?chat_id=@TestChannelChat&text=coucou
Run Code Online (Sandbox Code Playgroud)

这给了我以下答案:

GET https://api.telegram.org/botXXXXXXTOKENXXXXXXX/sendMessage?chat_id=@TestChannelChat&text=coucou
Run Code Online (Sandbox Code Playgroud)

我还做了以下操作(绕过实际聊天并直接在频道中发布消息):

GET https://api.telegram.org/botXXXXXXTOKENXXXXXXX/sendMessage?chat_id=@TestChannel&text=coucou
Run Code Online (Sandbox Code Playgroud)

这给了我以下答案:

{
  "ok": false,
  "error_code": 403,
  "description": "Forbidden: bot is not a member of the supergroup chat"
}
Run Code Online (Sandbox Code Playgroud)

一个简单的问题,由于机器人也用于广播消息,我缺少其设置的哪一部分?

Gag*_*T K 7

您在使用 Telegram 机器人方面处于正确的轨道上。但首先要了解一下chat_id

chat_id是聊天用户名或聊天ID 。您只能为公共聊天/群组设置用户名。在您的情况下,您有一个私人群组,并且没有用户名。chat_id您传递的值@TestChannelChat不属于您的聊天。您必须通过id聊天或设置公共用户名并通过它。

如果您不知道如何检查id聊天,请阅读此处: https: //stackoverflow.com/a/38388851/10359385