当前位置: 首页 > 知识库问答 >
问题:

通过电报发送消息:“禁止:bot不是超级组聊天的成员”或“禁止:bot不是频道聊天的成员”

何涵畅
2023-03-14

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

以下是我所做的电报设置:

  • 我通过获得令牌创建了机器人XXXXXXX_bot
  • 我创建了一个通道:
    • 点击"新频道"
    • 通道名称:TestChannel
    • 点击下一步
    • 选择私人频道
    • 点击保存
    • 添加我的机器人XXXXXXX_bot
    • 点击制作管理员
    • 点击保存
    • 打开频道TestChannel
    • 在频道菜单上,选择“管理频道”
    • 单击讨论中的“添加组”
    • 单击“创建新组”
    • 组名:TestChannelChat
    • 单击“创建”
    • 单击“保存”
    • 打开组TestChannelChat
    • 在右侧面板上,我单击“添加成员”
    • 添加我的botXXXXXXX\u bot
    • 单击“添加
    • 右键单击聊天室中新添加的用户,然后选择“升级到管理员”
    • 单击“保存”

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

    一天结束时,聊天室/通话组的设置如下所示:

    我进行以下http调用:

    GET https://api.telegram.org/botXXXXXXTOKENXXXXXXX/sendMessage?chat_id=@TestChannelChat&text=coucou
    

    这给了我以下答案:

    {
      "ok": false,
      "error_code": 403,
      "description": "Forbidden: bot is not a member of the supergroup chat"
    }
    

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

    GET https://api.telegram.org/botXXXXXXTOKENXXXXXXX/sendMessage?chat_id=@TestChannel&text=coucou
    

    这给了我以下答案:

    json prettyprint-override">{
      "ok": false,
      "error_code": 403,
      "description": "Forbidden: bot is not a member of the channel chat"
    }
    

    一个简单的问题,作为一个机器人也意味着广播消息,我错过了它的设置的哪一部分?

共有1个答案

邵伟泽
2023-03-14

您在使用电报机器人方面的做法是正确的。但首先要了解聊天室id

chat\u id是聊天用户名或聊天id。您只能为公共聊天/组设置用户名。在你的情况下,你有一个私人组,没有用户名。您正在传递的@TestChannelChat聊天id的值不属于您的聊天室。您必须传递聊天室的id,或者设置一个公共用户名并传递它。

如果你不知道如何检查聊天的id,请阅读这里:https://stackoverflow.com/a/38388851/10359385

 类似资料:
  • 当新用户加入机器人所在的组时,我使用Telegram机器人webhook接收Update对象。我希望收到更多关于用户的信息,但我得到的只是: 我知道我可以使用getFullUser APIendpoint,但是我不希望提出额外的请求。有没有办法将用户名包含到接收到的数据中?

  • 控制台-频道-聊天-发消息 接口URL {youke-url}/console/Index.php?c=live&a=setComment&timestamp=1607677497&access_key=abc&sign=5c734d046a244b27ffa74a4235a45a1b3ada5ec7 请求方式 POST Content-Type form-data 请求Query参数 参数 示例

  • 我正在开发一个1:1的聊天应用程序。在启动应用程序之前,我使用PHP服务器创建私有通道。正确创建通道。 生成用户令牌,并正确创建聊天客户端。我看到用户也是在服务中创建的。 它显示消息“正在连接....”然后在出现错误时停止。 PHP代码:

  • 所以我有一个Django应用程序,其中我使用频道来实现实时聊天。我的消费者看起来像这样: 导入json从asgiref.sync导入async_to_sync从channels.generic.websocket导入WebSocket消费者 因此,我正在寻找一种方法来保存发送的消息(因为当前它们在刷新时丢失)。我已经创建了一个消息模型,其中消息文本有一个CharField。如果我在聊天室信息功能中

  • 控制台-频道-聊天-删除消息 接口URL {youke-url}/console/Index.php?c=live&a=deleteComment&timestamp=1607677497&access_key=abc&sign=6513239c21beabd37f043d8f8c85ad655afcada0 请求方式 POST Content-Type form-data 请求Query参数 参

  • 控制台-频道-聊天-获取消息 接口URL {youke-url}/console/Index.php?c=live&a=getComment&timestamp=1607677497&access_key=abc&sign=97d791101db8600e162935d43cc63f0e3510cb98 请求方式 POST Content-Type form-data 请求Query参数 参数 示