Метод getMyCommands

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

Описание

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

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

Примеры

php

<?php

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

// Пример 1: Получение команд с параметрами по умолчанию
function getMyCommandsDefault() {
    global $apiUrl;
    
    $response = file_get_contents($apiUrl . 'getMyCommands');
    $data = json_decode($response, true);
    
    if ($data['ok']) {
        echo "Команды по умолчанию:\n";
        foreach ($data['result'] as $command) {
            echo "/{$command['command']} - {$command['description']}\n";
        }
    }
    return $data['result'] ?? [];
}

// Пример 2: Получение команд с указанием scope и language_code
function getMyCommandsWithParams($scope = null, $language_code = '') {
    global $apiUrl;
    
    $params = [];
    if ($scope) {
        $params['scope'] = $scope;
    }
    if ($language_code) {
        $params['language_code'] = $language_code;
    }
    
    $url = $apiUrl . 'getMyCommands';
    if (!empty($params)) {
        $url .= '?' . http_build_query($params);
    }
    
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    return $data['result'] ?? [];
}

// Пример 3: Использование cURL с JSON параметрами
function getMyCommandsCurl($scope = null, $language_code = null) {
    global $apiUrl;
    
    $data = [];
    if ($scope) {
        $data['scope'] = $scope;
    }
    if ($language_code) {
        $data['language_code'] = $language_code;
    }
    
    $ch = curl_init($apiUrl . 'getMyCommands');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json'
    ]);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    return $result['result'] ?? [];
}

// Пример 4: Практическое использование с разными scope
function getAllCommands() {
    $commands = [];
    
    // Команды по умолчанию
    $commands['default'] = getMyCommandsDefault();
    
    // Команды для приватных чатов
    $privateScope = json_encode(['type' => 'all_private_chats']);
    $commands['private'] = getMyCommandsWithParams($privateScope);
    
    // Команды для групповых чатов
    $groupScope = json_encode(['type' => 'all_group_chats']);
    $commands['group'] = getMyCommandsWithParams($groupScope);
    
    // Команды для конкретного пользователя
    $userScope = json_encode([
        'type' => 'chat',
        'chat_id' => 123456789 // ID пользователя
    ]);
    $commands['user'] = getMyCommandsCurl($userScope);
    
    // Команды для русского языка
    $commands['ru'] = getMyCommandsWithParams(null, 'ru');
    
    return $commands;
}

// Пример 5: Обработка и вывод результатов
function displayCommands($commands) {
    if (empty($commands)) {
        echo "Команды не настроены\n";
        return;
    }
    
    foreach ($commands as $command) {
        echo "Команда: /{$command['command']}\n";
        echo "Описание: {$command['description']}\n";
        echo "---\n";
    }
}

// Использование функций
try {
    // Получаем команды по умолчанию
    $defaultCommands = getMyCommandsDefault();
    displayCommands($defaultCommands);
    
    // Получаем команды для русского языка
    $russianCommands = getMyCommandsWithParams(null, 'ru');
    displayCommands($russianCommands);
    
    // Получаем все команды в разных контекстах
    $allCommands = getAllCommands();
    
} catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage();
}

?>

python

import requests

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

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

# 1. Получить команды с параметрами по умолчанию
result = get_my_commands(bot_token)
print("Default commands:", result)

# 2. Получить команды для определенного языка
result_ru = get_my_commands(bot_token, language_code="ru")
print("Russian commands:", result_ru)

# 3. Получить команды для определенной области (scope)
scope_example = {
    "type": "chat",
    "chat_id": 123456789
}
result_scope = get_my_commands(bot_token, scope=scope_example)
print("Chat-specific commands:", result_scope)

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

  • API 4.7. Добавлен метод getMyCommands
  • API 5.3. Обновлен метод getMyCommands: Добавлены параметры scope и language_code

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

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