Возможно кто подскажет по боту telebot.
Вообщем бот задает 4-5 вопросов, собирает ответы в лист, и затем делает расчеты исходя из собранных ответов. Для расчетов написан отдельный модуль. Возникает зависание бота, если им начинают пользоваться несколько пользователей одновременно,на одном из вопросов бот просто не чего не делает и все весит пока не перезапустить его в ручную. Причем бот не показываете какой ошибки. Если к боту обращается один пользователь, то все нормально отрабатывает. Бот запускаю на pycharm
строго не судите я только учусь.(а вообще я инструктор по сноуборду)
Вообщем бот задает 4-5 вопросов, собирает ответы в лист, и затем делает расчеты исходя из собранных ответов. Для расчетов написан отдельный модуль. Возникает зависание бота, если им начинают пользоваться несколько пользователей одновременно,на одном из вопросов бот просто не чего не делает и все весит пока не перезапустить его в ручную. Причем бот не показываете какой ошибки. Если к боту обращается один пользователь, то все нормально отрабатывает. Бот запускаю на pycharm
строго не судите я только учусь.(а вообще я инструктор по сноуборду)
Код:
import telebot
from telebot import types
from time import sleep
import raschet
bot = telebot.TeleBot('6963474359:AAHpq9r4Tdd3mrj2AAw5cPCLI53ooouH-WM')
d = ''
answers = []
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
@bot.message_handler(commands=['start'])
def start_message(message):
global answers
answers.clear()
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Мужчина')
btn2 = types.KeyboardButton('Женщина')
markup.row(btn1, btn2)
bot.send_message(message.chat.id, 'Привет! Я помогу подобрать тебе сноуборд. Ответь на несколько вопросов:\n\n'
'Для кого вы хотите подобрать сноуборд? (Мужчины/Женщины)', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def send_text(message):
global answers
if message.text.lower() == 'мужчина' or message.text.lower() == 'женщина':
answers.append(message.text.lower())
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn2 = types.KeyboardButton('Новичок')
btn3 = types.KeyboardButton('Прогрессирующий')
markup.row(btn2)
markup.row(btn3)
bot.send_message(message.chat.id, 'Укажите ваш уровень владения сноубордом.', reply_markup=markup)
elif message.text.lower() == 'новичок':
a = telebot.types.ReplyKeyboardRemove()
answers.append(message.text.lower())
bot.send_message(message.chat.id, 'Укажите ваш рост в сантиметрах.\n'
'(Пример: 170 или 167)', reply_markup=a)
elif message.text.lower() == 'прогрессирующий':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Карвинг')
btn2 = types.KeyboardButton('Флэт фристайл')
btn3 = types.KeyboardButton('Фрирайд')
btn4 = types.KeyboardButton('Джиббинг')
btn5 = types.KeyboardButton('Любитель')
# btn6 = types.KeyboardButton('Фристайл(трамплин)')
markup.row(btn5)
markup.row(btn1, btn3)
markup.row(btn2, btn4)
# markup.row(btn6)
answers.append(message.text.lower())
bot.send_message(message.chat.id,
'Пожалуйста, выберете дисциплину для которой нужно выполнить подбор сноуборда.'
'\n\n'
'Если вы просто катаетесь по склонам выберете "Любитель"',
reply_markup=markup)
elif message.text.lower() == 'фристайл(трамплин)' or message.text.lower() == 'любитель' \
or message.text.lower() == 'карвинг' or message.text.lower() == 'флэт фристайл' \
or message.text.lower() == 'фрирайд' or message.text.lower() == 'джиббинг':
a = telebot.types.ReplyKeyboardRemove()
answers[-1] = message.text.lower()
bot.send_message(message.chat.id, 'Укажите ваш рост в сантиметрах.\n'
'(Пример: 170 или 167)', reply_markup=a)
elif message.text.isdigit() or is_number(message.text.replace(',', '.')):
if len(answers) == 2:
answers.append(float(message.text.replace(',', '.')))
bot.send_message(message.chat.id, 'Укажите ваш вес в КГ\n'
'(Пример: 45 или 70')
elif len(answers) == 3:
answers.append(float(message.text.replace(',', '.')))
bot.send_message(message.chat.id, 'Укажите ваш размер ноги в Российском стандарте\n'
' (Пример, 42.5 или 38).')
elif len(answers) == 4:
answers.append(float(message.text.replace(',', '.')))
global d
d = raschet.raschet_nov(answers)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
#btn1 = types.KeyboardButton('Подобрать в магазине')
btn2 = types.KeyboardButton('Выполнить новый подбор')
#markup.row(btn1)
markup.row(btn2)
bot.send_message(message.chat.id, f'Вот варианты досок которые мы рекомендуем вам\n\n{d[0]}',
parse_mode='html', reply_markup=markup, disable_web_page_preview=True)
elif message.text.lower() == 'подобрать в магазине':
d = raschet.raschet_nov(answers)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Подобрать в магазине')
btn2 = types.KeyboardButton('Выполнить новый подбор')
markup.row(btn1)
markup.row(btn2)
bot.send_message(message.chat.id,
f'Подобрали вам оборудование в магазине канте\n\n{raschet.podborakaKANT(d[1])}',
parse_mode='html', disable_web_page_preview=True)
bot.send_message(message.chat.id, f'NLI00104', reply_markup=markup)
elif message.text.lower() == 'выполнить новый подбор':
answers.clear()
start_message(message)
else:
bot.send_message(message.chat.id,
'Вы не верно ответили на заданный вопрос.'
' Внимательно его прочтите. '
'Вам следует выбрать из предложеных вариантов или написать ответ так как это указано'
' в примере задоваемого вопроса. Или вы можете перезапустить бот. /start')
answers.clear()
while True:
try:
bot.polling(none_stop=True)
except Exception as e:
print(f"Error: {e}")
print("Restarting in 20 seconds...")
sleep(20)