在Telegram Bot API中不能“send_message”

时间:2015-11-21 03:49:36

标签: python api telegram telegram-bot

在我自己的库中,我正在尝试使用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方法正常工作。

2 个答案:

答案 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的方法

  1. 如果该漫游器是该频道中的管理员(转到“添加管理员...”并搜索您的漫游器以添加它),则该频道中发送的任何消息都将使该漫游器能够看到它,并且在每封邮件中都有一个发件人的ID,如果在一个通道中,则是其通道ID ...
  2. 使用此漫游器@ChannelIdBot ...尽管该漫游器仍需要以管理员身份在频道中才能发送消息...