Как сохранить значение переменной до нажатия кнопки
У меня есть переменная 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 извините за то что комментариев почти нет :(