使用discord.py更改Discord机器人的昵称

时间:2019-12-18 16:53:36

标签: python discord.py repl.it

我正在制造一个Discord机器人,所以我想拥有它,因此当on_ready将该机器人的昵称设置为

时,

⇨ ⇨ m O d E r A t O r B o T ⇦ ⇦

我也在使用repl.it:
https://repl.it/@CodingAndMemes/Moderator-Bot

1 个答案:

答案 0 :(得分:0)

您将要使用Bot.get_guild检索要在其中设置机器人昵称的服务器的特定Guild对象。然后,您可以使用the me attribute of the Guild object (Guild.me)来获取代表服务器中机器人的Member对象。有了该Member对象,您可以使用该方法的its edit coroutine method (Member.edit)nick参数来更改其自己的昵称。

例如:

@bot.event
async def on_ready():
    guild = bot.get_guild(123456789)
    me = guild.me
    await me.edit(nick="⇨ ⇨ m O d E r A t O r  B o T ⇦ ⇦")

确保您的漫游器有权更改其自己的昵称。否则,这将引发discord.Forbidden错误。如果您不知道自己的机器人会使用change_nickname还是manage_nicknames permission,则应首先进行检查,例如与Member.guild_permissions

如果不想通过ID获取公会对象,请参见https://discordpy.readthedocs.io/en/latest/faq.html#how-do-i-get-a-specific-model

我建议您在尝试更改机器人之前,先用Member.nick来检查它的昵称是否已经不是您想要的名字。这样,您就不会执行不必​​要的API请求。如果要放在on_ready中,则尤其如此,因为每次启动该bot时都会这样做,之后可能还会多次。

我还建议您不要在repl.it上托管机器人。它可以用于测试您是否正在执行此操作,但是它不是为托管目的而设计的,尝试这样做有很多缺点。