Для отправки меню только определенным пользователям вам нужно отправлять команду меню в качестве обычного сообщения с использованием InlineKeyboard. Вы можете определить соответствующую разметку клавиатуры, а затем отправить ее в ответ на сообщение пользователя с помощью метода send_message
бота.
Пример кода на PHP для отправки меню только для определенных пользователей может выглядеть так:
<?php
include __DIR__ . '/vendor/autoload.php';
$telegram = new \TelegramBot\Api\Client('YOUR_BOT_TOKEN');
// здесь ваш список пользователей, для которых нужно показывать меню
$users_with_menu = [123456, 789012];
// обработчик команды /start
$telegram->onCommand('start', function ($message) use ($telegram) {
// отправляем сообщение приветствия
$telegram->sendMessage($message->getChat()->getId(), 'Здравствуйте!');
});
// обработчик команды /menu
$telegram->onCommand('menu', function ($message) use ($telegram, $users_with_menu) {
$user_id = $message->getChat()->getId();
if (in_array($user_id, $users_with_menu)) {
$keyboard = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup(
[
[
new \TelegramBot\Api\Types\Inline\InlineKeyboardButton('Кнопка 1', '', 'button1'),
new \TelegramBot\Api\Types\Inline\InlineKeyboardButton('Кнопка 2', '', 'button2')
]
]
);
$telegram->sendMessage($message->getChat()->getId(), 'Выберите пункт меню:', null, false, null, $keyboard);
} else {
$telegram->sendMessage($message->getChat()->getId(), 'У вас нет доступа к меню.');
}
});
$telegram->run();
В этом примере мы проверяем идентификатор пользователя и отправляем только тем, у кого есть доступ к меню. При нажатии на кнопки, вы можете обрабатывать их в inline-обработчике, указанном в вашем боте.
Надеюсь, это поможет вам решить вашу проблему.