Как показать клавиатуру одному пользователю в канале telegram?
Пишу телеграмм бота при помощи TelegramBotApi
После того как пользователь вводит команду /game у него должна отобразиться клавиатура с вариантами ответа. Но в канале с другими участниками она отображается у всех пользователей. Вычитал что selective может справиться с этой проблемой. Но при добавлении его в данные клавиатуры (types.ReplyKeyboardMarkup(one_time_keyboard=True, selective = True, resize_keyboard=True)) клавиатура не показывается ни кому. Не могу понять как сделать, чтобы selective указывал только на одного пользователя (или группу пользователей) и только ему показывал клавиатуру?
Python 3
Ответы (2 шт):
Делай send_message конкретному юзеру, то есть передавай не chat.id а from_user.id
Условие - бот находиться в группе, пользователь вызывает \команду и получает персонально(другим участникам группы их не показывает) кнопки.
@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 - решает условие

