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