@Michael_Catlink

Как организовать работа нескольких пользователей с ботом (ООП telebot)?

На всех пользователей приходится 1 переменная answer. Понимаю, что нужно работать с классом, но не могу сам разобраться. По сути, пользователь сообщает боту число и все. Не понимаю, как ответ подвязать к chat.id

import telebot
from telebot import types

bot = telebot.TeleBot('token')

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'Привет, Я - Бот Poizon Plug! Введи стоимость в юанях')
    bot.register_next_step_handler(message, cost)

def cost(message):
    global answer
    try:
        answer = int(message.text.strip())
    except ValueError:
        bot.send_message(message.chat.id, 'Неверные данные. Введите стоимость в юанях')
        bot.register_next_step_handler(message, cost)
        return
    if answer > 0:
        markup = types.InlineKeyboardMarkup(row_width=2)
        btn1 = types.InlineKeyboardButton('Обувь', callback_data=1)
        btn2 = types.InlineKeyboardButton('Одежда', callback_data=0.5)
        btn3 = types.InlineKeyboardButton('Аксессуары', callback_data=0.1)
        btn4 = types.InlineKeyboardButton('Интерьер', callback_data=1.5)
        markup.add(btn1, btn2, btn3, btn4)
        bot.send_message(message.chat.id, 'Выберите тип айтема', reply_markup=markup)
    else:
        bot.send_message(message.chat.id, 'Неверные данные. Введите стоимость в юанях')
        bot.register_next_step_handler(message, cost)

    @bot.callback_query_handler(func=lambda call: True)
    def callback(call):
        value = call.data.upper()
        res = (answer + 30) * 1.08 * 12.6 + 12 * 86 * float(value)
        bot.send_message(call.message.chat.id, f'Получается: {round(res, 2)}. Введите стоимость другого айтема')
        bot.register_next_step_handler(call.message, cost)

bot.polling(none_stop=True)
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Хранилище, где значению chat.id сопоставляется значение answer.
Простейший вариант - словарь (dict), но этот словарь не переживёт перезапуск бота.
БД будет сложнее, но зато персистентно - что в БД попало, то там и будет при следующем запуске.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы