Метод getChatMenuButton

Метод для получения текущей или стандартной кнопки меню бота в личном чате.

Описание

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

Параметр Тип Обязательный Описание
chat_id Integer Необязательный Уникальный идентификатор целевого личного чата. Если не указан, будет возвращена кнопка меню бота по умолчанию

Примеры

php

<?php

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

// Пример 1: Получить меню бота для конкретного чата
$chatId = 123456789; // ID приватного чата
$data = [
    'chat_id' => $chatId
];

// Пример 2: Получить дефолтное меню бота (без указания chat_id)
// $data = [];

$ch = curl_init($apiUrl . 'getChatMenuButton');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $data,
    CURLOPT_HTTPHEADER => ['Content-Type: multipart/form-data']
]);

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

$result = json_decode($response, true);

if ($result['ok']) {
    $menuButton = $result['result'];
    
    // Обработка разных типов кнопок меню
    switch ($menuButton['type']) {
        case 'commands':
            echo "Тип меню: Команды\n";
            break;
        case 'web_app':
            echo "Тип меню: Веб-приложение\n";
            echo "Текст: " . $menuButton['text'] . "\n";
            echo "URL: " . $menuButton['web_app']['url'] . "\n";
            break;
        case 'default':
            echo "Тип меню: Стандартный\n";
            break;
    }
} else {
    echo "Ошибка: " . $result['description'] . "\n";
}

// Альтернативный вариант с использованием file_get_contents
function getChatMenuButton($chatId = null) {
    $botToken = 'YOUR_BOT_TOKEN';
    $url = "https://api.telegram.org/bot{$botToken}/getChatMenuButton";
    
    $options = [
        'http' => [
            'method' => 'POST',
            'header' => 'Content-Type: application/x-www-form-urlencoded',
            'content' => $chatId ? http_build_query(['chat_id' => $chatId]) : ''
        ]
    ];
    
    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
    
    return json_decode($response, true);
}

// Использование функции
$result = getChatMenuButton(123456789);
if ($result['ok']) {
    print_r($result['result']);
}
?>

python

import requests

def get_chat_menu_button(bot_token, chat_id=None):
    """
    Получает текущее значение кнопки меню бота в приватном чате.
    
    Args:
        bot_token (str): Токен вашего бота
        chat_id (int, optional): ID приватного чата. Если не указан, 
                                возвращается кнопка меню по умолчанию.
    
    Returns:
        dict: Объект MenuButton или None в случае ошибки
    """
    url = f"https://api.telegram.org/bot{bot_token}/getChatMenuButton"
    
    params = {}
    if chat_id is not None:
        params['chat_id'] = chat_id
    
    try:
        response = requests.post(url, json=params)
        response.raise_for_status()
        result = response.json()
        
        if result.get('ok'):
            return result.get('result')
        else:
            print(f"Ошибка: {result.get('description')}")
            return None
            
    except requests.exceptions.RequestException as e:
        print(f"Ошибка запроса: {e}")
        return None

# Пример использования
if __name__ == "__main__":
    # Замените на ваш токен
    BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
    
    # Пример 1: Получить кнопку меню по умолчанию
    default_button = get_chat_menu_button(BOT_TOKEN)
    if default_button:
        print(f"Кнопка меню по умолчанию: {default_button}")
    
    # Пример 2: Получить кнопку меню для конкретного чата
    # ЗАМЕНИТЕ на реальный chat_id
    # PRIVATE_CHAT_ID = 123456789
    # specific_button = get_chat_menu_button(BOT_TOKEN, PRIVATE_CHAT_ID)
    # if specific_button:
    #     print(f"Кнопка меню для чата {PRIVATE_CHAT_ID}: {specific_button}")

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

  • API 6.0. Добавлен метод getChatMenuButton

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

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