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”
1条答案
按热度按时间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
。