Описание
Используйте этот метод, чтобы изменить выбранные реакции на сообщении. На служебные сообщения некоторых типов нельзя ставить реакции. Автоматически пересланные сообщения из канала в его группу обсуждения имеют те же доступные реакции, что и сообщения в канале. Боты не могут использовать платные реакции. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_id | Integer | Да | Идентификатор целевого сообщения. Если сообщение принадлежит медиагруппе, реакция будет установлена на первое неудалённое сообщение в группе. |
| reaction | Массив ReactionType | Необязательный | Список типов реакций в формате JSON для установки на сообщение. В настоящее время боты как непреміум-пользователи могут устанавливать до одной реакции на сообщение. Пользовательская эмодзи-реакция может быть использована, если она уже присутствует на сообщении или явно разрешена администраторами чата. Боты не могут использовать платные реакции. |
| is_big | Boolean | Необязательный | Передайте True, чтобы установить реакцию с большой анимацией |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Данные для установки реакции
$chatId = 123456789; // ID чата или @username канала
$messageId = 987; // ID сообщения
$reaction = [
[
'type' => 'emoji',
'emoji' => '👍'
]
];
$isBig = false;
// Подготовка данных
$data = [
'chat_id' => $chatId,
'message_id' => $messageId,
'reaction' => json_encode($reaction),
'is_big' => $isBig
];
// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'setMessageReaction');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
echo "Реакция успешно установлена!";
} else {
echo "Ошибка: " . $result['description'];
}
// Альтернативный вариант с использованием file_get_contents
/*
$url = $apiUrl . 'setMessageReaction?' . http_build_query($data);
$response = file_get_contents($url);
$result = json_decode($response, true);
*/
// Пример с кастомной эмодзи
/*
$customReaction = [
[
'type' => 'custom_emoji',
'custom_emoji_id' => 'CUSTOM_EMOJI_ID'
]
];
*/
// Пример с несколькими реакциями (для премиум-пользователей)
/*
$multipleReactions = [
[
'type' => 'emoji',
'emoji' => '🔥'
],
[
'type' => 'emoji',
'emoji' => '❤️'
]
];
*/
?>
python
import asyncio
from telegram import Bot, ReactionTypeEmoji
async def set_message_reaction_example():
bot = Bot(token="YOUR_BOT_TOKEN")
# Установить реакцию "👍" на сообщение
await bot.set_message_reaction(
chat_id=123456789, # ID чата или @username
message_id=42, # ID сообщения
reaction=[ReactionTypeEmoji(emoji="👍")],
is_big=False
)
# Установить несколько реакций (для премиум-пользователей)
await bot.set_message_reaction(
chat_id="@channelusername",
message_id=100,
reaction=[
ReactionTypeEmoji(emoji="🔥"),
ReactionTypeEmoji(emoji="❤️")
]
)
# Удалить все реакции (передать пустой массив)
await bot.set_message_reaction(
chat_id=123456789,
message_id=42,
reaction=[]
)
# Запуск асинхронной функции
asyncio.run(set_message_reaction_example())
История изменений
- API 7.0. Добавлен метод setMessageReaction
Дополнительно
- ReactionType - Объект, описывающий тип реакции в Telegram, который может быть эмодзи, кастомным эмодзи или платной реакцией.