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