Discord.py中检测输入双引号失效问题排查与解决
解决Discord.py命令中含双引号无输出的问题
问题原因
你的命令函数只定义了单个位置参数text,Discord.py默认按空格拆分输入内容。当输入包含引号(尤其是未闭合的引号)时,命令解析器无法正确拆分参数,直接触发参数错误,导致你的函数根本没被执行,自然没有任何输出。另外,原代码里的两个独立if逻辑还会出现重复发送消息的问题(比如输入既含引号又是"ok"时,会同时发送"bad"和"ok")。
解决步骤
1. 修改参数为可变参数,捕获完整输入
将命令参数改为*, text,这样会把用户输入的所有内容(包括空格、引号)作为单个字符串传递给text,确保判断逻辑能正常触发。同时把第二个if改成elif,避免多条件触发重复发送:
@commands.command() async def test(self, ctx, *, text): if "\"" in text: await ctx.send("bad") elif text == "ok": await ctx.send("ok") else: await ctx.send("no")
2. 可选:添加错误处理器,提示参数问题
可以给命令添加错误处理函数,当用户输入不符合要求时给出明确提示:
@test.error async def test_error(self, ctx, error): if isinstance(error, commands.MissingRequiredArgument) or isinstance(error, commands.BadArgument): await ctx.send("请输入正确的内容,不要留空或使用异常格式的引号")
内容的提问来源于stack exchange,提问作者Inj3ct0r
相关产品推荐
相关产品推荐

