Python discord.py AttributeError:&x27;str';对象没有属性';id';
问题是,我用python.py在python中创建了一个discord bot,我创建了一个命令,通过将用户id放在json文件中使某人静音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
@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
(在两种情况下)。