Метод setMessageReaction

Метод позволяет изменять реакции на сообщении в чате или канале.

Описание

Используйте этот метод, чтобы изменить выбранные реакции на сообщении. На служебные сообщения некоторых типов нельзя ставить реакции. Автоматически пересланные сообщения из канала в его группу обсуждения имеют те же доступные реакции, что и сообщения в канале. Боты не могут использовать платные реакции. Возвращает 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, который может быть эмодзи, кастомным эмодзи или платной реакцией.
Комментарии