Как сохранить значение переменной до нажатия кнопки

У меня есть переменная us_id которая хранит в себе айди пользователя (us_id = message.chat.id)

Также есть словарь с пользователями users

И я не пойму как сохранить старое значение us_id до того момента, как админ нажмёт у себя кнопку о выполнении заказа. Проблема в том что переменная меняется если ботом пользуется ещё кто-то, и убрать заказ из списка заказов по ключу айди пользователя уже не получится(ниже есть код ошибки, где показано что случается в таком случае).

Вот так выглядит код сообщения для админа

def message_for_admin(message):
    global us_id
    order_number = random.randint(1000, 10000)
    keyboard = types.InlineKeyboardMarkup()
    complite_order = types.InlineKeyboardButton(text='Заказ выполнен✅', callback_data='complite_order')
    cancel_order = types.InlineKeyboardButton(text='Отклонить заказ❌', callback_data='cancel_order')
    block_user = types.InlineKeyboardButton(text='Заблокировать пользователя⛔️', callback_data='block_user')
    msg = ('Заказ #' + str(order_number)
            + '\n\nНомер телефона - ' + str(phone_number)
            + '\n\nАддрес - ' + str(dry_location)
            + '\n\nМагазин - ' + str(shop)
            + '\n\nСписок покупок - ' + str(order_text)
            + '\n\nСпособ оплаты - ' + str(pay_method)
            + '\n\nНик - @' + str(user_name))
    keyboard.add(complite_order, cancel_order)
    keyboard.add(block_user)
    users[us_id].append(str(msg)) #Добавляю в бд данные заказа
    bot.send_message(config.admin_id, text='Новый заказ!')
    bot.send_message(config.admin_id, text=msg, reply_markup=keyboard)

Вот так выглядит код выполнения кнопки Заказ выполнен✅

@bot.callback_query_handler(func=lambda c:True)
def inline(call):
    global delite_index
    global us_id
    if (call.data == 'complite_order'):
        search_index = call.message.text
        delite_index = users[us_id].index(search_index)
        users[us_id].pop(delite_index)#Удаление заказа из бд если он выполнен
        bot.send_message(config.admin_id, text='Заказ успешно выполнен✅')
        bot.send_message(us_id, text=call.message.text)
        bot.send_message(us_id, text='Заказ выше доставлен, спасибо что пользуетесь нашим сервисом?')

А вот такая ошибка возникает

Traceback (most recent call last):
  File "C:\Users\Игорь\PycharmProjects\Wior delivery\main.py", line 253, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1104, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1179, in __threaded_polling
    raise e
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1141, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\util.py", line 149, in raise_exceptions
    raise self.exception_info
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\util.py", line 92, in run
    task(*args, **kwargs)
  File "C:\Users\Игорь\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 7850, in _run_middlewares_and_handler
    result = handler['function'](message)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Игорь\PycharmProjects\Wior delivery\main.py", line 116, in inline
    delite_index = users[us_id].index(search_index)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: 'Заказ #4277\n\nНомер телефона - Test\n\nАддрес - Test\n\nМагазин - Центральный\n\nСписок покупок - Pivo\n\nСпособ оплаты - Наличными?\n\nНик - @Verlonya' is not in list

P.s извините за то что комментариев почти нет :(


Ответы (0 шт):