You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord bot开发时JSON用户bag字段Log条目匹配异常问题求助

1. 消息发送参数错误

discord.py的ctx.send()方法第二个参数是tts(文本转语音开关,布尔值),你写的await ctx.send("YES", name)实际上是把name传给了tts参数,根本不会把name拼到消息里。就算匹配逻辑触发了,你也只会收到一条内容为YES的消息,很容易误以为逻辑没运行。
你可以先在if代码块里加一行调试打印确认:

if 'Log' in item["item"]:
    print("匹配逻辑已触发") # 控制台能看到这行就说明匹配是正常的
    await ctx.send("YES", name)

修复方法:把两个参数拼接为单个字符串传入:

await ctx.send(f"YES {name}")

2. 字符串匹配存在隐性问题

你直接打印item["item"]看到Log不代表字符串完全匹配,可能存在前后空格、不可见字符、大小写差异的情况。用repr()打印字符串原始值可以精准排查:

print(repr(item["item"]))

如果输出不是完全的'Log',可以调整匹配逻辑提升兼容性:

# 忽略前后空格+忽略大小写匹配,适配更多异常情况
if "log" in item["item"].strip().lower():
    await ctx.send(f"YES {name}")

额外优化建议

你当前的逻辑是遍历背包所有物品,每匹配到一次Log就发一次消息,如果背包里有多条Log条目会重复发消息。如果只需要判断是否存在Log,可以改成:

has_log = any("log" in item["item"].strip().lower() for item in bag)
if has_log:
    await ctx.send("YES 背包里存在Log")

内容的提问来源于stack exchange,提问作者peet214

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:12:02