如何向主题线程发送电报消息?

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

最近 Telegram 在 Bot API 版本 6.3 中添加了对组中主题的支持,并将此支持添加到 python-telegram-bot 版本 13.15 中(请查找更改日志 https://docs.python-telegram-bot.org/en/stable/changelog .html

我发送这样的消息:

{
  "@type": "sendMessage",
  "chat_id": "-1001580394181",
  "input_message_content": {
      "@type": "inputMessageText","text": {
          "@type": "formattedText","text": "test", "entities": [] 
       }
  }
}

并且它有效。他们添加了 message_thread_id 参数来定义消息应发送到哪个主题。所以我添加了参数:

{
  "@type": "sendMessage",
  "chat_id": "-1001580394181",
  "message_thread_id": "20451426304",
  "input_message_content": {
      "@type": "inputMessageText","text": {
          "@type": "formattedText","text": "test", "entities": [] 
       }
}

但是消息转到主要主题,没有错误或任何内容,除非我提供不正确的 message_thread_id,如果是这样,我会收到消息:

Code: 400, message: Invalid message thread ID specified

我做错了什么? ID 是正确的,我是通过捕获向主题通道发送测试消息的响应而得到的。

telegram message
2个回答
5
投票

要向 Telegram 论坛主题发送消息,您需要回复一条消息:

💬 "Topic" was created

所以基本上您在电报主题中发送的每条消息都只是对此原始消息的回复。如果您将论坛视为消息,则可以检查此项。

例如,我已删除该消息,所以我:

  • 将我的机器人添加到论坛
  • 创建了新主题
  • 打开链接
    https://api.telegram.org/bot{token}/getUpdates
  • 寻找主题创建消息的
    message_id

这是我的消息的样子:

{
    “好的”:正确的,
    “结果”:
    [
        {
            “更新id”:1234567890,
            “信息”:
            {
                “消息id”:12345,
                “从”:
                {
                    ...
                },
                “聊天”:
                {
                    “id”:-12345678,
                    “标题”:“布鲁”,
                    “is_forum”:正确,
                    “type”:“超群”
                },
                “日期”:0987654321,
                “消息线程 ID”:12345,
                “论坛主题已创建”:
                {
                    ...
                },
                “is_topic_message”:true
            }
        }
    ]
}

所以您可以选择

message_id
message_thread_id
。就我而言,它们是相同的,但我不确定是否有区别。

现在将此

message_id
作为
reply_to_message_id
参数粘贴到
bot.send_message()
方法中。

bot.send_message(-12345678, 'Message for topic', reply_to_message_id=12345)


0
投票
How in Google Script write?

function sendReminderToTelegram() {
  var telegramBotToken = "____";
  var telegramChatId = "-100CHAT_ID";
  
  // Проверка текущего времени
  var currentTime = new Date();
  var targetTime = new Date();
  targetTime.setHours(8); // Установка желаемого часа
  targetTime.setMinutes(0); // Установка желаемых минут

   
    // Создание сообщения
    var message = "Прошу проверить принтеры и заправить их.";
    
    // Отправка сообщения в Telegram
    var telegramUrl = "https://api.telegram.org/bot" + telegramBotToken + "/sendMessage";
    var payload = {
      "chat_id": telegramChatId,
      "text": message,
    };
    
    var options = {
      "method" : "post",
      "payload" : payload
    };
    
    UrlFetchApp.fetch(telegramUrl, options);
  //}
}
© www.soinside.com 2019 - 2024. All rights reserved.