Ответ Telegram Bot с двумя или более сообщениями - PullRequest
0 голосов
/ 20 мая 2018

Я использую pyTelegramBotAPI .Я делаю некоторую цепочку функций, используя register_next_step_handler(msg, process_name_step) Она работает нормально, как я хочу.Но если я отправлю этому боту два или более сообщений от пользователя, не ожидая ответа, привет, начните отвечать двумя или более ответами.Я использую webhooks и CherryPy Вот часть моего кода:

# Handle '/start'
@bot.message_handler(commands=['start'])
def handle_start(message):
    # get user id
    user_id = message.from_user.id
    # get User
    user = commands.get_user(message)
    # if lng not selected
    if user[6] == 0:
        # set user markup
        user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
        user_markup.row('Русский язык', 'Українська мова')
        msg = bot.send_message(user_id, 'Добрый день, выберите пожалуйста язык бота.\n'
                                        'Добрий день, оберіть будь ласка мову бота.', reply_markup=user_markup)
        bot.register_next_step_handler(msg, lng_select)
    # if lng ru
    elif user[6] == 1:
        message.text = 'ru'
        menu_ru(message)
    # if lng ua
    elif user[6] == 2:
        message.text = 'ua'
        menu_ua(message)



def lng_select(message):
    lng = message.text
    if lng == 'Русский язык':
        commands.set_user_lng(message, 1)
        handle_start(message)
    elif lng == 'Українська мова':
        commands.set_user_lng(message, 2)
        handle_start(message)
    else:
        handle_start(message)


# ru version
def menu_ru(message):
    admin = [(1, 1111111, 1)]
    #get user id
    user_id = message.from_user.id
    # get User
    user = commands.get_user(message)
    user_full_name = ''
    if user[2]:
        user_full_name = ' ' + user[2]
    # get Basket
    basket = commands.make_basket(message)
    if not basket:
        basket = ''
    user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
    user_markup.row('Купить журнал')
    user_markup.row('Подтвердить оплату')
    user_markup.row('Поменять язык')
    if basket:
        user_markup.row('Перейти к заказу')
        user_markup.row('Очистить корзину')
    if message.from_user.id == admin[0][1]:
        user_markup.row('/admin')
    msg = bot.send_message(user_id, 'Добро пожаловать' + user_full_name + '!\n'
                           + basket +
                           'Что бы вы хотели сделать?', reply_markup=user_markup)
    bot.register_next_step_handler(msg, process_menu_ru_step)
...