Как исправить, чтобы в телеграмм, прошлая клавиатура не копировалась при повторной отправке?
Я делаю бота в телеграмме, на Питоне с использованием библиотеки aiogram.
Во время работы с клавиатурой, столкнулся с проблемой и не могу найти решение. Проблема заключается в том, что у меня стоит реакция на определенное сообщение, после которого - отправляется клавиатура. Потом, при нажатии на эту клавиатуру, на данный момент, мне нужно чтобы она скрывалась. Процесс скрытия заключается в том, чтобы отправить пустую клавиатуру. Всё успешно, однако, после 2 попытки отправить клавиатуру на эту же команду, получается так, что клавиатура "копируется" и в итоге, у меня уже не 2 кнопки как должно быть, а 4. Помогите пожалуйста решить данную проблему. Фото:
Часть того кода:
elif userAct == "joing":
if msgr == str(dsert[0]):
print("yes1")
dbs.dt.update_users_act(id, "newUser") #изменение статуса пользователя в бд
await msg.reply("es", reply_markup=types.ReplyKeyboardRemove())
elif msgr == str(dsert[1]):
print("yes2")
dbs.dt.update_users_act(id, "newUser")
await msg.reply("es", reply_markup=types.ReplyKeyboardRemove())
else:
print("yes3")
dbs.dt.update_users_act(id, "newUser")
await msg.reply("es", reply_markup=types.ReplyKeyboardRemove())
Ответы (2 шт):
При отправке кнопок вы можете добавить опцию one_time_keyboard=True, которое скроет кнопки после нажатия. Почитайте об этом здесь
Сделайте вначале список:
black_users = []
В функции обработчика нажатий кнопки запишите:
global black_users
if ID юзера not in black_users:
#код действий по нажатию кнопки
black_users.append(ID юзера)
Такой код сойдёт даже на многопользовательского бота (в отличие от другого ответа).
P. S. с aiogram работал мало, поэтому я не знаю, как вызвать ID юзера и заменяю русской фразой. Замените это на функцию получения ID юзера