Здравствуйте! пишу тг бота-калькулятора,но на основной стадии код крашит
Создал исправно работающего бота в тг,но когда дело подошло к реализации сути бота(т.е калькулятора)бот крашится. Калькулятор сделан на инлайн кнопках,которые при взаимодействии крашат код. Не могу понять в чём мог ошибиться, в самих кнопках или же в коде калькулятора.
value = ''
old_value = ''
код инлайн кнопок:
keyboard = telebot.types.InlineKeyboardMarkup()
keyboard.row(telebot.types.InlineKeyboardButton(' ', callback_data='no'),
telebot.types.InlineKeyboardButton('C', callback_data='C'),
telebot.types.InlineKeyboardButton('<=', callback_data='<='),
telebot.types.InlineKeyboardButton('/', callback_data='/') )
keyboard.row(telebot.types.InlineKeyboardButton('7', callback_data='7'),
telebot.types.InlineKeyboardButton('8',callback_data='8'),
telebot.types.InlineKeyboardButton('9', callback_data='9'),
telebot.types.InlineKeyboardButton('*', callback_data='*') )
keyboard.row(telebot.types.InlineKeyboardButton('4', callback_data='4'),
telebot.types.InlineKeyboardButton('5', callback_data='5'),
telebot.types.InlineKeyboardButton('6', callback_data='6'),
telebot.types.InlineKeyboardButton('-', callback_data='-'))
keyboard.row(telebot.types.InlineKeyboardButton('1', callback_data='1'),
telebot.types.InlineKeyboardButton('2', callback_data='2'),
telebot.types.InlineKeyboardButton('3', callback_data='3'),
telebot.types.InlineKeyboardButton('+', callback_data='+'))
keyboard.row(telebot.types.InlineKeyboardButton(' ', callback_data='no'),
telebot.types.InlineKeyboardButton('0', callback_data='0'),
telebot.types.InlineKeyboardButton(',', callback_data=','),
telebot.types.InlineKeyboardButton('=', callback_data='='))
код калькулятора:
` @bot.message_handler(commands=['calculater'])
def getMessage(message):
global value
if value == '':
bot.send_message(message.from_user.id, '0', reply_markup=keyboard)
else:
bot.send_message(message.from_user.id, value, reply_markup=keyboard)
@bot.callback_query_handler(func=lambda call: True)
def callback_func(query):
global value, old_value
data = query.data
if data == 'no':
pass
elif data == 'C':
value = ''
elif data == '<=':
if value != '':
value = value[:len(value)-1]
elif data == '=':
try:
value = str( eval(value) )
except:
value = 'Ошибка!'
else:
value += data
if ( value != old_value and value!= '' ) or ( '0' != old_value and value == '' ):
if value == '':
bot.edit_message_text(chat_id=query.message.chat.id, message_id=query.message.message_id, text='0', reply_markup=keyboard)
else:
bot.edit_message_text(chat_id=query.message.chat.id, message_id=query.message.message_id, text=value, reply_markup=keyboard)
old_value = value
if value == 'Ошибка!': value = ''`