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

问题描述 投票:0回答:3

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

这是我所做的电报设置:

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

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

enter image description here

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

enter image description here

我进行以下 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

这给了我以下答案:

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

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

telegram telegram-bot
3个回答
7
投票

您正处于使用 Telegram 机器人的正确轨道上。但首先要了解

chat_id

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

如果您不知道如何查看聊天

id
,请阅读此处:https://stackoverflow.com/a/38388851/10359385


0
投票

这应该是直截了当的

  • 单击频道名称,然后单击编辑图标
  • 点击管理员
  • 将您的 tg_bot 添加为管理员 就这样 enter image description here

-1
投票

用于发送帖子/消息您的私人聊天:

@dispatcher.message_handler(chat_type=[ChatType.SUPERGROUP])
async def send_chat_msg(message: types.Message):
    await bot.send_message(f'Message in your private chat ', reply_markup=markup)
© www.soinside.com 2019 - 2024. All rights reserved.