Python 不和谐机器人不是';t改变它';使用client.user.edit创建昵称

Python 不和谐机器人不是';t改变它';使用client.user.edit创建昵称,python,python-3.x,asynchronous,discord.py,Python,Python 3.x,Asynchronous,Discord.py,我正在使用以下python代码和discord.py创建一个带有discord.Client实例的discord bot。我希望机器人能够通过on_message(message:discord.message)功能更改其在公会上的头像和昵称,以匹配发送最新消息的用户的头像和昵称。如果你知道不是很硝基机器人,我想做一些类似的事情(只是改变机器人的外观以匹配公会成员)。化身的改变起了作用,至少是第一次。然后,在我尝试测试它时,它抛出了以下异常: discord.errors.HTTPExcepti

我正在使用以下python代码和
discord.py
创建一个带有
discord.Client
实例的discord bot。我希望机器人能够通过
on_message(message:discord.message)
功能更改其在公会上的头像和昵称,以匹配发送最新消息的用户的头像和昵称。如果你知道不是很硝基机器人,我想做一些类似的事情(只是改变机器人的外观以匹配公会成员)。化身的改变起了作用,至少是第一次。然后,在我尝试测试它时,它抛出了以下异常:

discord.errors.HTTPException:400错误请求(错误代码:50035):表单正文无效
在阿凡达:你改变你的阿凡达太快了。请稍后再试。
我想化身的改变会有某种程度的冷却。有没有办法避免这种情况

此外,昵称从未成功更改。我在公会上给了机器人一个昵称,这样就有一些东西可以改变,以防修复它。代码如下: 所有不一致的缩进都是堆栈溢出和复制粘贴的结果,它们不在实际代码中

async def on_消息(消息):
如果message.author==client.user:
返回
#这里删除了一些不相关的代码
与message.channel.typing()异步:
#这里省略的代码是不相关的,也是有效的
#下面的代码是有问题的部分
尝试:
等待消息。删除()
asset=message.author.avatar\u url\u as()
avatarBytes=等待资产。读取()
等待client.user.edit(nick=message.author.display\u name)
尝试:
等待client.user.edit(avatar=avatarBytes)
除discord.errors.HTTPException外:
#此错误是化身更改过快的错误
通过
等待message.channel.send(content=message.content,files=fileList)
除discord.errors.HTTPException外:
等待message.channel.send(“要发送的图像太多”)
#作为参考,此块仅在一次发送超过10个文件时触发
授权bot删除邮件和管理昵称。这是怎么回事? 提前谢谢

问题1(修补机器人的昵称) 您不能像这样编辑机器人的昵称,正如您在中看到的。要在公会中编辑机器人的昵称,您必须执行以下操作:

await message.guild.me.edit(nick=message.author.display_name) 
是您的机器人在公会中的
discord.Member
实例

问题2(修补你机器人的化身) 其次,根据discord.py,修补bot帐户的费率限制为2/3600(
PATCH Username
是这里使用的单词)。所以,机器人的这一部分可以用来做你想做的事情

其他解决方案(webhooks) 但我有一个解决方案来满足您的需求,我认为NQN正在使用它:。 您可以创建一个webhook,并使用它发送一条带有头像和您想要的用户名(在使用webhook发送的每条消息上定义)的消息。但是你的机器人本身的外观不会改变,只有化身和使用的网络钩子的名称会改变

解决方案的参考资料


非常感谢!我给了我的机器人更多的权限,并制作了所有的Webhook,现在它可以工作了

谢谢,这对我有所帮助。然而,现在我有一个新问题。一旦读取了资源的字节,它将跳过所有其他内容,不编辑webhook用户、删除消息或发送消息副本<在本例中,代码>非webhook==None
asset=message.author.avatar\u url\u as()avatarBytes=wait asset.read()wait webhook.edit(name=message.author.display\u name,avatar=avatarBytes)wait webhook.send(message.content,files=fileList)wait message.delete()
我想这可能是权限错误。我正在等待服务器创建者授予它管理员角色,我授权它具有管理员权限以确保安全,但根据我过去在这台特定服务器上的经验,至少它似乎还需要管理员角色