discord.py AttributeError:“ str”对象没有属性“ id”

时间:2018-12-23 11:12:26

标签: python string discord.py id

所以事情是,我正在用python.py在python中创建一个不和谐的机器人,并且正在通过将某人的用户ID放在json文件中来使某人静音。

@client.command()
async def mute(user):
with open("muted.json", 'r') as f:
    data = json.load(f)
if not user.id in data:
    data[user.id] = {}
else:
    await client.send_message(message.channel, "The user is already muted")

在“如果data.user.id中没有user.id”,则表示“ AttributeError:'str'对象没有属性'id'” 我该如何解决?

1 个答案:

答案 0 :(得分:1)

默认情况下,命令的所有参数都是字符串。如果要库为您转换它们,则必须通过提供converter并带有类型注释来告诉它要将其转换为哪种类型。如果要引用调用命令的message,则还必须告诉库将invocation context传递到命令回调中。

@client.command(pass_context=True)
async def mute(ctx, user: discord.User):
    with open("muted.json", 'r') as f:
        data = json.load(f)
    if not user.id in data:
        data[user.id] = {}
    else:
        await client.send_message(message.channel, "The user is already muted")

值得注意的是,该命令实际上并没有执行任何操作。它从文件创建字典,对其进行修改,然后在函数结束时将其丢弃。相反,您应该具有一个模块级data字典,该字典必须加载一次,然后在您对其进行修改时进行保存。