Метод setUserEmojiStatus

Метод позволяет боту изменить или удалить эмодзи-статус пользователя, который ранее предоставил соответствующее разрешение через Mini App.

Описание

Изменяет эмодзи-статус для указанного пользователя, который ранее разрешил боту управлять своим эмодзи-статусом через метод Mini App requestEmojiStatusAccess. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
user_id Integer Да Уникальный идентификатор целевого пользователя
emoji_status_custom_emoji_id String Опционально Идентификатор кастомного эмодзи для устанавливаемого статуса. Передайте пустую строку для удаления статуса.
emoji_status_expiration_date Integer Опционально Дата истечения срока действия эмодзи-статуса, если имеется

Примеры

php

<?php

// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';

// ID пользователя, которому нужно установить эмодзи статус
$userId = 123456789;

// ID кастомного эмодзи (можно получить из sticker.custom_emoji_id)
$customEmojiId = '1234567890123456789';

// Дата истечения статуса в формате Unix timestamp (необязательно)
$expirationDate = time() + 3600; // Через 1 час

// Формируем данные для запроса
$data = [
    'user_id' => $userId,
    'emoji_status_custom_emoji_id' => $customEmojiId,
    'emoji_status_expiration_date' => $expirationDate
];

// URL для вызова метода setUserEmojiStatus
$url = "https://api.telegram.org/bot{$botToken}/setUserEmojiStatus";

// Отправляем запрос с помощью cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
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); // Для отладки, в продакшене лучше использовать true

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $responseData = json_decode($response, true);
    
    if ($responseData['ok']) {
        echo 'Эмодзи статус успешно установлен!';
    } else {
        echo 'Ошибка: ' . $responseData['description'];
    }
}

curl_close($ch);

// Альтернативный вариант с удалением эмодзи статуса
function removeEmojiStatus($botToken, $userId) {
    $data = [
        'user_id' => $userId,
        'emoji_status_custom_emoji_id' => '' // Пустая строка удаляет статус
    ];
    
    $url = "https://api.telegram.org/bot{$botToken}/setUserEmojiStatus";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Пример использования функции удаления статуса
// $result = removeEmojiStatus($botToken, $userId);

?>

python

import requests

def set_user_emoji_status(bot_token, user_id, emoji_status_custom_emoji_id=None, emoji_status_expiration_date=None):
    """
    Changes the emoji status for a user who previously allowed the bot to manage their emoji status.
    
    Args:
        bot_token (str): Your bot's token
        user_id (int): Unique identifier of the target user
        emoji_status_custom_emoji_id (str, optional): Custom emoji identifier. Pass empty string to remove status.
        emoji_status_expiration_date (int, optional): Expiration date of the emoji status (Unix timestamp)
    
    Returns:
        bool: True on success
    """
    url = f"https://api.telegram.org/bot{bot_token}/setUserEmojiStatus"
    
    payload = {
        "user_id": user_id
    }
    
    if emoji_status_custom_emoji_id is not None:
        payload["emoji_status_custom_emoji_id"] = emoji_status_custom_emoji_id
    
    if emoji_status_expiration_date is not None:
        payload["emoji_status_expiration_date"] = emoji_status_expiration_date
    
    response = requests.post(url, json=payload)
    result = response.json()
    
    if result.get("ok"):
        return True
    else:
        raise Exception(f"Error: {result.get('description')}")

# Пример использования:
if __name__ == "__main__":
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    USER_ID = 123456789
    
    # Пример 1: Установка emoji статуса
    try:
        success = set_user_emoji_status(
            bot_token=BOT_TOKEN,
            user_id=USER_ID,
            emoji_status_custom_emoji_id="custom_emoji_id_here",
            emoji_status_expiration_date=1672531200  # Unix timestamp
        )
        print("Emoji status set successfully!")
    except Exception as e:
        print(f"Error: {e}")
    
    # Пример 2: Удаление emoji статуса
    try:
        success = set_user_emoji_status(
            bot_token=BOT_TOKEN,
            user_id=USER_ID,
            emoji_status_custom_emoji_id=""  # Пустая строка для удаления
        )
        print("Emoji status removed successfully!")
    except Exception as e:
        print(f"Error: {e}")

История изменений

  • API 8.0. Добавлен метод setUserEmojiStatus
Комментарии