我正在尝试在电报聊天中发送消息。 我希望电报设置只能通过官方 UI 完成,因为我希望它可能由最终用户完成。
这是我所做的电报设置:
XXXXXXX_bot
:没问题TestChannel
XXXXXXX_bot
TestChannel
TestChannelChat
TestChannelChat
XXXXXXX_bot
以下是频道管理员的设置:
最终,电报 UI 中的聊天/群组设置如下:
我进行以下 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 机器人的正确轨道上。但首先要了解
chat_id
。
chat_id
是聊天的 username 或 id。您只能为公共聊天/群组设置用户名。在您的情况下,您有一个私人群组,并且没有用户名。您传递 chat_id
的 @TestChannelChat
值不属于您的聊天。您必须传递聊天的id
或设置公共用户名并传递。
如果您不知道如何查看聊天
id
,请阅读此处:https://stackoverflow.com/a/38388851/10359385
用于发送帖子/消息您的私人聊天:
@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)