请告诉我如何循环检查输入的值,直到输入正确的值范围?谢谢。
import telebot
bot = telebot.TeleBot("TOKEN")
@bot.message_handler(commands=['start'])
def handle_text(message):
numvan = bot.send_message(message.chat.id, 'Введите оклад по званию:⭐')
bot.register_next_step_handler(numvan ,num1_fun)
def num1_fun(message):
if int(message.text.isdigit()):
if int(message.text) in range(7000, 35000):
bot.send_message(message.chat.id, 'Пойдет ✅ {}'.format(message.text))
else:
bot.send_message(message.chat.id, 'Укажите верный оклад 🐒')
else:
bot.send_message(message.chat.id, 'Оклад должен быть числом 🐒')
bot.polling(none_stop=range)
global num1;
num1 = message.text
numtwo = bot.send_message(message.chat.id, 'Введите оклад по должности:👮')
bot.register_next_step_handler(numtwo ,num2_fun)
def num2_fun(message):
if int(message.text.isdigit()):
if int(message.text) in range(15000, 45000):
bot.send_message(message.chat.id, 'Пойдет ✅ {}'.format(message.text))
else:
bot.send_message(message.chat.id, 'Укажите верный оклад 🐒')
else:
bot.send_message(message.chat.id, 'Оклад должен быть числом 🐒')
bot.polling(none_stop=True)
如果条件返回False,则为同一函数注册_next_step_handler🙆♀️
.format(message.text)->更好地替换为f 字符串 ->f'Пойдет ✅ {salary}'int(message.text.isdigit())->这里不需要转换为int ->if message.text.isdigit():- 这就足够了。 (.isdigit() - 返回 True\False)不建议生成所有有效数字
range(7000, 35000),因为存在等号:15000<=salary<=45000无需保存机器人的响应
numtwo = bot.send_message(..)即可将其传输到,您只需指定之前收到的消息bot.register_next_step_handler(message, num2_fun)作为参数 即可。bot.polling(none_stop=True)您不需要将其粘贴在每个函数中,该方法应该在代码的最后调用一次。这是程序的主循环,应该只有一个。