Как сделать что бы значение переменной не сохранялось в callback_query_handler?

Рейтинг: 0Ответов: 1Опубликовано: 18.05.2023

Когда пользователь первый раз нажимает на кнопку "Отказаться" бот удаляет сообщение и всё работает, но если ещё раз вызвать команду и нажать кнопку он пытается удалить сообщение которое было удалено при первом нажатии. Как я понял id первого сообщение сохраняется в переменную msg и не заменяется на второе. Подскажите пожалуйста как это исправить, заранее спасибо

 @bot.message_handler(commands=['command'])
def command(message):

    kb = types.InlineKeyboardMarkup()                                                 
    accept = types.InlineKeyboardButton(text='Принять', callback_da = 'accept')
    refuse = types.InlineKeyboardButton(text='Отказаться', callback_data = 'refuse')  
    kb.apd(accept, refuse)  
   
    msg = bot.send_message(message.chat_id, "text", reply_markup=kb) 
                          
    @bot.callback_query_handler(func=lambda call: True)
    def call(call):
                            
        if call.data == 'accept':   
            pass     
                                                                                                                                 
        elif call.data == 'refuse':
                               
            bot.edit_message_text(chat_id = message.chat.id, message_id = msg.message_id, text = '❌')
            time.sleep(0.5)
            bot.delete_message(message.chat.id, msg.message_id)                                                                                                       

Ответы

▲ 2

Как написали выше, функция call не должна находиться внутри функции command. Если хотите использовать переменную из одной функции в другой функции, можете использовать конструкцию global. Подробнее об этой конструкции можете почитать здесь.