如何使用setMessageReaction(Telegram Bot API)?

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

Telegram 最近添加了一个新的 API 函数来设置反应:

setMessageReaction

使用此方法可以更改对消息的所选反应
...


我已经创建了一个机器人,并将其以管理员身份添加到频道中,现在我想代表其向出版物添加反应。


我尝试过以下 PHP 代码:

function sendToTelegram($token, $method, $response)
{
    $ch = curl_init('https://api.telegram.org/bot' . $token . '/' . $method);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}

$result = sendToTelegram('BOT_KEY', 'setMessageReaction', ['chat_id' => -1001493310237, 'message_id' => 27, 'reaction[]' => "👍"]);

在我得到的回复中:

{"ok":true,"result":true}

但是该出版物没有得到任何反应。

我做错了什么?

telegram telegram-bot
1个回答
0
投票

您将表情符号作为错误的数据格式传递。

reaction
setMessageReaction
参数需要是
ReactionType
的数组。

因此,您需要类似以下内容,而不是传递

"👍"
作为反应:

[
    [ 'type' => 'emoji', 'emoji' => '👍' ]
]

我使用以下 PHP 代码成功设置了反应:

<?php


$token = '859163076:....';
$chat = 1;
$message = 2;

$data = http_build_query([
    'chat_id' => $chat,
    'message_id' => $message
]);

$reactions = json_encode([
    [ 'type' => 'emoji', 'emoji' => '👍' ]
]);

$re = @file_get_contents("https://api.telegram.org/bot$token/setMessageReaction?{$data}&reaction={$reactions}");
var_dump($re);

© www.soinside.com 2019 - 2024. All rights reserved.