在我自己的库中,我正在尝试使用Telegram Bot API中的“sendMessage” API方法发送消息。我创建了一个标题为“my_channel123”的频道,我的用户名为“my_username123”。所以我是频道的管理员和唯一的用户。
当我尝试从机器人向整个频道或我自己发送消息时,我收到错误Bad request 400
。这是我试图这样做的方式:
my_bot.send_message(chat_id="@my_channel123", text="tetfdsfd")
# or
my_bot.send_message(chat_id="@my_channel123my_username123", text= "tetfdsfd")
# or
my_bot.send_message(chat_id="@my_username123", text="tetfdsfd")
我认为错误是以通道或用户名的ID或两者的格式出现的。所有这3个调用都是正确的,这意味着我用于chat_id的格式是否正确?
请注意,很可能的情况是聊天或user_name的ID(或者更确切地说,格式)或其他,因为我的库中的其他post和get方法正常工作。
答案 0 :(得分:6)
您必须先将该机器人添加为该频道的管理员,然后才能向该频道发送消息。完成后,您的第一行应该有效:
<table>
<tr>
<td>row_1/col_1</td>
<td>col_2</td>
<td>col_3</td>
<td>col_4</td>
<td>col_5</td>
</tr>
<tr>
<td>row_2</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>row_3</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>row_4</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>row_5</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
另请注意,my_bot.send_message(chat_id="@my_channel123", text="tetfdsfd")
后面的内容应为频道用户名,而不是标题。
答案 1 :(得分:0)
将消息发送到频道时,我认为最简单的方法是使用频道ID发送消息... 有几种获取频道ID的方法
@ChannelIdBot
...尽管该漫游器仍需要以管理员身份在频道中才能发送消息...