Запоминать нажатие на кнопки Telebot python
При нажатии кнопок в Инлайновой клавиатуре бот какждыр раз заново выбывает функцию внутри метода , а как я могу записывать нажаты ли ранее кнопки
@bot.callback_query_handler(func=lambda call: True)
def callBack(call):
try:
if call.data == 'yes':
murkup = types.InlineKeyboardMarkup(row_width=2)
button1 = types.InlineKeyboardButton("1", callback_data='yes1')
button2 = types.InlineKeyboardButton("2", callback_data='yes2')
button3 = types.InlineKeyboardButton("3", callback_data='yes3')
button4 = types.InlineKeyboardButton("4", callback_data='yes4')
button5 = types.InlineKeyboardButton("5", callback_data='yes5')
murkup.add(button1, button2, button3, button4, button5)
bot.send_message(call.message.chat.id, "Да, я так и думал. Разбираем роли ",
reply_markup=murkup)
elif call.data == 'yes1':
bot.send_message(call.message.chat.id,
"Роль <b>КЕРРИ</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
elif call.data == 'yes2':
bot.send_message(call.message.chat.id,
"Роль <b>МИДЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
elif call.data == 'yes3':
bot.send_message(call.message.chat.id,
"Роль <b>ХАРДЛАЙНЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
elif call.data == 'yes4':
bot.send_message(call.message.chat.id,
"Роль <b>РОУМЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
elif call.data == 'yes5':
bot.send_message(call.message.chat.id,
"Роль <b>САППОРТ</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
elif call.data == 'no':
bot.send_message(call.message.chat.id, "Нет? А ты уверен ?")
except Exception as e:
print(repr(e))
Если я пропишу в каждом if по переменной и запишу в неё True ,то после следующего нажатия на кнопку вс' однулиться, подскажите как єто решить
Ответы (1 шт):
Автор решения: MihailPy
→ Ссылка
попробуйте сделать список и при нажатии проверять есть ли в списке, если нет то добавляешь, если есть то пишешь что занято.
примерно вот так
roles = []
@bot.callback_query_handler(func=lambda call: True)
def callBack(call):
try:
if call.data == 'yes':
murkup = types.InlineKeyboardMarkup(row_width=2)
button1 = types.InlineKeyboardButton("1", callback_data='yes1')
button2 = types.InlineKeyboardButton("2", callback_data='yes2')
button3 = types.InlineKeyboardButton("3", callback_data='yes3')
button4 = types.InlineKeyboardButton("4", callback_data='yes4')
button5 = types.InlineKeyboardButton("5", callback_data='yes5')
murkup.add(button1, button2, button3, button4, button5)
bot.send_message(call.message.chat.id, "Да, я так и думал. Разбираем роли ",
reply_markup=murkup)
elif call.data == 'yes1':
if roles.count('yes1') > 0:
bot.send_message(call.message.chat.id,
"Роль <b>КЕРРИ</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
else:
roles.append('yes1')
elif call.data == 'yes2':
if roles.count('yes2') > 0:
bot.send_message(call.message.chat.id,
"Роль <b>МИДЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
else:
roles.append('yes2')
elif call.data == 'yes3':
if roles.count('yes3') > 0:
bot.send_message(call.message.chat.id,
"Роль <b>ХАРДЛАЙНЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
else:
roles.append('yes3')
elif call.data == 'yes4':
if roles.count('yes4') > 0:
bot.send_message(call.message.chat.id,
"Роль <b>РОУМЕР</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
else:
roles.append('yes4')
elif call.data == 'yes5':
if roles.count('yes5') > 0:
bot.send_message(call.message.chat.id,
"Роль <b>САППОРТ</b> занята {0.first_name}".format(call.from_user),
parse_mode="html")
else:
roles.append('yes5')
elif call.data == 'no':
bot.send_message(call.message.chat.id, "Нет? А ты уверен ?")
except Exception as e:
print(repr(e))