Метод setStickerMaskPosition

Метод изменяет позицию маски у стикера-маски, принадлежащего набору, созданному ботом.

Описание

Используйте этот метод, чтобы изменить MaskPosition стикера-маски. Стикер должен принадлежать набору стикеров, созданному ботом. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
sticker String Да Идентификатор файла стикера
mask_position MaskPosition Необязательный Объект в формате JSON с позицией, где маска должна размещаться на лицах. Пропустите параметр, чтобы удалить позицию маски.

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";

// Идентификатор стикера (замените на реальный)
$stickerFileId = 'CAACAgIAAxkBAAIB...';

// Создаем объект MaskPosition
$maskPosition = [
    'point' => 'forehead', // Допустимые значения: forehead, eyes, mouth, chin
    'x_shift' => 0.5,
    'y_shift' => 0.5,
    'scale' => 1.0
];

// Подготавливаем данные для запроса
$postData = [
    'sticker' => $stickerFileId,
    'mask_position' => json_encode($maskPosition)
];

// Отправляем запрос к API Telegram
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'setStickerMaskPosition');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
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 "Позиция маски успешно обновлена!\n";
} else {
    echo "Ошибка: " . $result['description'] . "\n";
}

// Альтернативный вариант: удаление позиции маски
$postDataRemove = [
    'sticker' => $stickerFileId
    // mask_position не передаем для удаления
];

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $apiUrl . 'setStickerMaskPosition');
curl_setopt($ch2, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $postDataRemove);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);

$response2 = curl_exec($ch2);
curl_close($ch2);

$result2 = json_decode($response2, true);

if ($result2['ok']) {
    echo "Позиция маски успешно удалена!\n";
} else {
    echo "Ошибка при удалении: " . $result2['description'] . "\n";
}

?>

python

import requests

def set_sticker_mask_position(bot_token, sticker, mask_position=None):
    """
    Изменяет позицию маски для стикера.
    
    Args:
        bot_token (str): Токен бота
        sticker (str): Идентификатор файла стикера
        mask_position (dict, optional): Позиция маски. Если None - удаляет позицию.
    
    Returns:
        bool: True при успехе
    """
    url = f"https://api.telegram.org/bot{bot_token}/setStickerMaskPosition"
    
    payload = {
        "sticker": sticker
    }
    
    if mask_position:
        payload["mask_position"] = mask_position
    
    response = requests.post(url, json=payload)
    result = response.json()
    
    if result.get("ok"):
        return True
    else:
        raise Exception(f"Ошибка: {result.get('description')}")

# Пример использования:
if __name__ == "__main__":
    # Токен вашего бота
    BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
    
    # Идентификатор стикера (можно получить из сообщения со стикером)
    STICKER_FILE_ID = "CAACAgIAAxkBAAIB..."
    
    # Пример позиции маски (если нужно установить)
    mask_position_example = {
        "point": "forehead",  # Точка привязки: forehead, eyes, mouth, chin
        "x_shift": 0.5,       # Сдвиг по X (от -1.0 до 1.0)
        "y_shift": -0.25,     # Сдвиг по Y (от -1.0 до 1.0)
        "scale": 1.5          # Масштаб маски
    }
    
    try:
        # Установка позиции маски
        success = set_sticker_mask_position(
            BOT_TOKEN,
            STICKER_FILE_ID,
            mask_position_example
        )
        print(f"Позиция маски установлена: {success}")
        
        # Удаление позиции маски (передаем None)
        success = set_sticker_mask_position(
            BOT_TOKEN,
            STICKER_FILE_ID,
            None
        )
        print(f"Позиция маски удалена: {success}")
        
    except Exception as e:
        print(f"Произошла ошибка: {e}")

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

  • API 6.6. Добавлен метод setStickerMaskPosition

Дополнительно

  • MaskPosition - Объект, определяющий стандартное положение маски на лице с возможностью смещения и масштабирования.
Комментарии