Как сопоставить пользователя и его ответ в процессе диалога пользователя и telebot?

Использую код в котором в переменные 'item' и 'phone_number' сохраняется необходимая информация от пользователя бота,но проблема в том что если ботом одновременно пользуются более одного человека, то информация в переменную падает от последнего пользователя который написал боту. Поэтому нужно сопоставлять сообщение и айди юзера который написал. Предполагаю что это можно сделать через словарь, но как именно написать код не понимаю.

import telebot
from telebot import types

bot = telebot.TeleBot('token')
item = ''
phone_number = ''

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Фрукты")
    btn2 = types.KeyboardButton("Овощи")
    markup.add(btn1, btn2)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}! Что бы вы хотел купить?".format(message.from_user), reply_markup=markup)


@bot.message_handler(content_types=['text'])
def func(message):
    global item
    chat_id=message.chat.id
    if(message.text == "Фрукты"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Яблоко")
        btn2 = types.KeyboardButton("Бананы")
        markup.add(btn1, btn2)
        bot.send_message(message.chat.id,text='А конкретнее?', reply_markup=markup)

    elif(message.text == "Бананы"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Микробанан 220 р/кг")
        btn2 = types.KeyboardButton("Банан 150 р/кг")
        markup.add(btn1, btn2)
        bot.send_message(message.chat.id, text="Выбирайте", reply_markup=markup)
        bot.send_photo(chat_id, caption="Микробанан 220 р/кг",photo=open('media/minibanana.jpg', 'rb'))
        bot.send_photo(chat_id, caption="Банан 150 р/кг",photo=open('media/banana.jpg', 'rb'))

         
    elif(message.text == "Банан 150 р/кг"):
        item = message.text
        bot.send_message(message.chat.id, text=f"Вы выбрали {item}. Чтобы оформить заказ введите свой номер телефона и наш менеджер свяжется с вами")
        bot.register_next_step_handler(message, get_number)

def get_number(message):
    global item
    global phone_number
    phone_number = message.text
    keyboard = types.InlineKeyboardMarkup(); 
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes') 
    keyboard.add(key_yes)
    key_no= types.InlineKeyboardButton(text='Нет', callback_data='no')
    keyboard.add(key_no)
    question = 'Вы хотите купить '+item+' , ваш номер телефона '+phone_number+'?'
    bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    global item
    global phone_number
    chat_id = (admin_id)
    if call.data == "yes":
        bot.send_message(call.message.chat.id, 'Ожидайте звонка, наш менеджер свяжется с вами')
        bot.send_message(chat_id, f'вот заказ {item}, номер телефона {phone_number}')


bot.polling(interval=0)

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