如何在Discord.py中将用户输入转换为int类型?
解决Discord.py中
int()转换Message对象的错误 你用await bot.wait_for("message")拿到的是一个Message对象,不是用户输入的纯文本内容,直接传给int()肯定会报错——int()只接受字符串、字节类对象或数字类型,不认Message实例。
核心修正方法
提取Message对象的content属性,这才是用户发送的文本内容,再进行类型转换:
# 获取用户的Message对象 user_input_msg = await bot.wait_for("message") # 提取文本后转换为整数,同时处理非数字输入的情况 try: answer = int(user_input_msg.content) # 这里编写转换成功后的逻辑 except ValueError: # 提示用户输入无效 await user_input_msg.channel.send("请输入有效的整数!")
额外优化:限定回复用户
如果需要确保只有触发命令的用户才能回复,可以给wait_for添加检查条件(假设在命令上下文ctx中使用):
user_input_msg = await bot.wait_for( "message", check=lambda m: m.author == ctx.author and m.channel == ctx.channel )
内容的提问来源于stack exchange,提问作者Zephyrus
相关产品推荐
相关产品推荐

