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