Телеграм бот python бот не может корректно работать с несколько пользователями одновременно

@bot.message_handler(commands="start")
def start(message):
    bot.send_message(message.chat.id, "Введи свое имя")
    bot.register_next_step_handler(message, question1)
    
def question1(message):
    user_name = message.text
    # Дальше я эту переменную хочу записывать в какой то файл типа excel или еще какой то
    

но проблема в том что если бота одновременно используют 2 человека то эта переменная не успевая сохраниться запоминает только последнее значение, как это можно исправить, если отпишите подробно


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

Автор решения: scary1482

сам разбирался с этим вопросом два дня, увидел случайно методы словарей решил почитать и вроде разобрался, тоже советую к прочтению, как в пример могу привести тебе это

user_dict = {}

class User:
    def __init__(self, name):
        self.name = name
        self.accumulation_rub = 0
        self.income_rub = 0
        self.expense_rub = 0
        self.profit_rub = 0
        self.memory_sum = 0
        self.memory_sum_old = 0

@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    msg = bot.send_message(message.chat.id, 'Введите x')
    bot.register_next_step_handler(msg, next_step_valuey)

def next_step_valuey(message):
    chat_id = message.chat.id       
    name = message.from_user.id     
    userid = User(name)             
    user_dict[chat_id] = userid     

    valuex = message.text
    userid = user_dict[chat_id]
    userid.valuex = valuex

    msg = bot.send_message(message.chat.id, f'Введите y', parse_mode = 
    'html')
    bot.register_next_step_handler(msg, next_step_valuesum)

def next_step_valuesum(message):
    chat_id = message.chat.id
    valuey = message.text
    userid = user_dict[chat_id]
    userid.valuey = valuey

    valuewalletsum = int(userid.valuex) + int(userid.valuey)
    userid.valuewalletsum = valuewalletsum


    bot.send_message(message.chat.id, f'x {userid.valuex} \n'
                                      f'y {userid.valuey} \n'    
                                      f'sum {userid.valuewalletsum}')
→ Ссылка
Автор решения: Бульбик

Для этого необходимо записать id отправителя и его сообщение в словарь

def question1(message):
    dict = {}
    user_name = message.text
    user_id = messgae.chat.id
    d{user_id} = user_name
→ Ссылка
Автор решения: Alex

Не совсем понял вопрос. Всё там нормально работает для разных пользоватаелей. И в коде ошибка по-моему (если я правильно предположил ожидаемый результат) Вы должны передавать в next_step_handler сообщение бота, на которе он будет ожидать ответ, а вы передаете сообщение пользователя. То есть должно быть

@bot.message_handler(commands="start")
def start(message):
    msg = bot.send_message(message.chat.id, "Введи свое имя")
    bot.register_next_step_handler(msg, question1)
→ Ссылка
Автор решения: flexyyy

Не используйте message.chat.id в качестве пользователя!!!Он предназначен для групп, а для пользователей есть message.from_user.id Если использовать message.chat.id в качестве пользователя в группе то при использования кнопки, у всех будет также, как и у вас(если сделать многоуровневые кнопки) Советую использовать ассинхроный TeleBot либо же aiogram

→ Ссылка