Discord Bot检查消息中是否存在来自json的密钥

vs91vp4v  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(114)
from discord.ext import commands
import json

with open(r"C:\Users\intel\Desktop\rijalbot\rijaldata\narrators.json") as f:
    narrators = json.load(f)


class cmds(commands.Cog):
    def __init__(self, client):
        self.bot = client

    @commands.command()
    async def rijal(self, ctx, message):
      if narrators.keys() in ctx.message:
          val = narrators.get(ctx.message)
          if val == "weak":
              await ctx.send("True")

narrators.json

{"a": "weak"}

我希望我的discord bot检查我的消息是否包含来自json的密钥,但每次我运行它并执行[!rijal a]命令时,它什么也不做,它应该发送“True”

bqf10yzr

bqf10yzr1#

narrators.keys()是字典中所有键的视图,message是一个字符串,因此narrators.keys()永远不会出现在message中。
如果消息不完全相同,narrators.get(message)也不起作用。您使用的是in,因此您只需要查找子字符串。例如:"a"in"another",但是{"a": "weak"}.get("another")找不到匹配项,因为"another"不在字典中。
如果你想要子字符串,那么就在键上循环。要得到值,可以使用对应的key而不是message从dict中得到它,因为那样是行不通的(如上所述)。另一种方法是使用items同时在键和值上循环。
如果需要完全匹配,get()将在未找到任何匹配时返回None

  • PS考虑使用实际数据库而不是JSON文件 *

相关问题