Здравствуйте. При разработке бота столкнулся с проблемой. Дело в том что я не знаю каким образом можно взаимодействовать с callback.data из двух разных меню.
У меня есть
keyboard('cypher')
с разметкой выбора шрифта, и
keyboard('action')
с выбором действия. После получения данных с клавиатур, их нужно единожды применить. Каким образом можно это сделать?
@bot.message_handler(content_types=['text'])
def aaa(message):
mtext = message.text
chatid = message.chat.id
global user
user = User(chatid, mtext)
bot.send_message(chatid, mtext, reply_markup=keyboard('cypher'))
@bot.callback_query_handler(func=lambda call: True)
def callback(call):
cypher = Cypher()
if call.data in ('caesar', 'affine', 'base64', 'atbash'):
cypher.set_cypher(call.data)
print("set cypher " + cypher.get_cypher())
else:
cypher.set_action(call.data)
print("set action " + cypher.get_action())
try:
bot.edit_message_reply_markup(user.chatid, call.message.message_id, reply_markup=keyboard('action'))
print('changed')
except:
pass
try:
if cypher.get_cypher() == 'base64':
text = base64.encrypt(user.mtext) if cypher.get_action() == 'encode' else base64.decrypt(user.mtext)
elif cypher.get_cypher() == 'atbash' and (cypher.get_action() == 'encode' or cypher.get_action() == 'decode'):
text = atbash.do_atbash(user.mtext)
bot.edit_message_text(chat_id=user.chatid, message_id=call.message.message_id, text=text)
except:
pass
Как видите, я пытаюсь использовать классы, но проблем стало ещё больше.
Заранее спасибо за ответ