Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python discord.py AttributeError:&x27;str';对象没有属性';id';_Python_String_Discord.py - Fatal编程技术网

Python discord.py AttributeError:&x27;str';对象没有属性';id';

Python discord.py AttributeError:&x27;str';对象没有属性';id';,python,string,discord.py,Python,String,Discord.py,问题是,我用python.py在python中创建了一个discord bot,我创建了一个命令,通过将用户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_messa

问题是,我用python.py在python中创建了一个discord bot,我创建了一个命令,通过将用户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")
它在“如果数据中没有user.id:”中表示“AttributeError:'str'对象没有属性'id'”
如何解决此问题?

默认情况下,命令的所有参数都是字符串。如果希望库为您转换它们,则必须通过提供类型注释来告诉库您希望将其转换为什么类型。如果要引用调用该命令的
消息
,还必须告诉librtary将消息传递到命令回调中

@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")

值得注意的是,这个命令实际上没有任何作用。它从一个文件创建一个字典,修改它,然后在函数结束时丢弃它。相反,您应该有一个模块级
数据
字典,该字典只加载一次,然后在修改时保存

尝试使用
'user.id'
而不是
user.id
(在两种情况下)。