Как показать клавиатуру одному пользователю в канале telegram?

Пишу телеграмм бота при помощи TelegramBotApi

После того как пользователь вводит команду /game у него должна отобразиться клавиатура с вариантами ответа. Но в канале с другими участниками она отображается у всех пользователей. Вычитал что selective может справиться с этой проблемой. Но при добавлении его в данные клавиатуры (types.ReplyKeyboardMarkup(one_time_keyboard=True, selective = True, resize_keyboard=True)) клавиатура не показывается ни кому. Не могу понять как сделать, чтобы selective указывал только на одного пользователя (или группу пользователей) и только ему показывал клавиатуру?

Python 3


Ответы (2 шт):

Автор решения: G_Govnyk_K

Делай send_message конкретному юзеру, то есть передавай не chat.id а from_user.id

→ Ссылка
Автор решения: vinter_man

Условие - бот находиться в группе, пользователь вызывает \команду и получает персонально(другим участникам группы их не показывает) кнопки.

@dp.message_handler(commands='bomb')
async def cmd_bomb(message: types.Message):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1, selective=True)
      # resize_keyboard=True - уменьшение кнопок к объекту клавиатуры
      # row_width=х разобьёт кнопки на строки по х элемента в каждой
      # selective=True - показа клавиатуры лишь некоторым участникам
    buttons = ['"Небольшой толчок..."', 'Разминировать']
    keyboard.add(*buttons)
    await message.reply('Решается судьба Мегатонны...', reply_markup=keyboard)    
      # message.reply - решает условие

Тот, кто вызывает: введите сюда описание изображения

Остальные участники: введите сюда описание изображения

→ Ссылка