Как сопоставить пользователя и его ответ в процессе диалога пользователя и 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)