Метод deleteMyCommands

Метод удаляет список команд бота для определённой области и языка, после чего пользователям показываются команды более высокого уровня.

Описание

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

Параметр Тип Обязательный Описание
scope BotCommandScope Необязательный Объект в формате JSON, описывающий область пользователей, для которых команды актуальны. По умолчанию используется BotCommandScopeDefault.
language_code String Необязательный Двухбуквенный код языка ISO 639-1. Если пусто, команды будут применяться ко всем пользователям из указанной области, для языка которых нет специальных команд.

Примеры

php

<?php

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

// Вариант 1: Удалить все команды (по умолчанию)
$data1 = [];

// Вариант 2: Удалить команды для приватных чатов
$data2 = [
    'scope' => json_encode(['type' => 'default'])
];

// Вариант 3: Удалить команды для группы/супергруппы
$data3 = [
    'scope' => json_encode(['type' => 'all_group_chats'])
];

// Вариант 4: Удалить команды для конкретного пользователя
$data4 = [
    'scope' => json_encode([
        'type' => 'chat',
        'chat_id' => 123456789
    ])
];

// Вариант 5: Удалить команды с указанием языка
$data5 = [
    'scope' => json_encode(['type' => 'default']),
    'language_code' => 'ru'
];

// Выполнение запроса (пример с вариантом 1)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/x-www-form-urlencoded'
]);

$response = curl_exec($ch);
curl_close($ch);

// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
    echo "Команды успешно удалены\n";
} else {
    echo "Ошибка: " . $result['description'] . "\n";
}

// Альтернативный вариант с использованием BotCommandScope классов
class BotCommandScope {
    public static function default() {
        return ['type' => 'default'];
    }
    
    public static function allPrivateChats() {
        return ['type' => 'all_private_chats'];
    }
    
    public static function allGroupChats() {
        return ['type' => 'all_group_chats'];
    }
    
    public static function allChatAdministrators() {
        return ['type' => 'all_chat_administrators'];
    }
    
    public static function chat($chatId) {
        return [
            'type' => 'chat',
            'chat_id' => $chatId
        ];
    }
    
    public static function chatAdministrators($chatId) {
        return [
            'type' => 'chat_administrators',
            'chat_id' => $chatId
        ];
    }
    
    public static function chatMember($chatId, $userId) {
        return [
            'type' => 'chat_member',
            'chat_id' => $chatId,
            'user_id' => $userId
        ];
    }
}

// Пример использования классов
$data6 = [
    'scope' => json_encode(BotCommandScope::allGroupChats()),
    'language_code' => 'en'
];

// Функция-помощник
function deleteBotCommands($scope = null, $languageCode = null) {
    $botToken = 'YOUR_BOT_TOKEN';
    $apiUrl = "https://api.telegram.org/bot{$botToken}/deleteMyCommands";
    
    $data = [];
    
    if ($scope) {
        $data['scope'] = json_encode($scope);
    }
    
    if ($languageCode) {
        $data['language_code'] = $languageCode;
    }
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Примеры вызова функции
// Удалить все команды
deleteBotCommands();

// Удалить команды для администраторов чатов на русском языке
deleteBotCommands(BotCommandScope::allChatAdministrators(), 'ru');

// Удалить команды для конкретного пользователя в конкретном чате
deleteBotCommands(BotCommandScope::chatMember(123456, 789012), 'en');

?>

python

import requests

def delete_my_commands(bot_token, scope=None, language_code=None):
    url = f"https://api.telegram.org/bot{bot_token}/deleteMyCommands"
    
    payload = {}
    if scope:
        payload['scope'] = scope
    if language_code:
        payload['language_code'] = language_code
    
    response = requests.post(url, json=payload)
    return response.json()

# Пример использования:
bot_token = "YOUR_BOT_TOKEN"

# Вариант 1: Удалить команды по умолчанию (для всех пользователей)
result = delete_my_commands(bot_token)
print(result)

# Вариант 2: Удалить команды для приватных чатов
scope_private = {"type": "all_private_chats"}
result = delete_my_commands(bot_token, scope=scope_private)
print(result)

# Вариант 3: Удалить команды для конкретного языка
scope_default = {"type": "default"}
result = delete_my_commands(bot_token, scope=scope_default, language_code="en")
print(result)

# Вариант 4: Удалить команды для конкретного пользователя
scope_user = {
    "type": "chat",
    "chat_id": 123456789
}
result = delete_my_commands(bot_token, scope=scope_user, language_code="ru")
print(result)

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

  • API 5.3. Добавлен метод deleteMyCommands

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

  • BotCommandScope - Объект определяет область применения команд бота, включая семь различных вариантов охвата пользователей и чатов.
  • BotCommandScopeDefault - Область действия команд бота по умолчанию, которая применяется при отсутствии более специфичных команд для пользователя.
Комментарии