我正在使用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)