【发布时间】:2019-12-19 02:31:14
【问题描述】:
我正在制作一个 Discord 机器人,我想拥有它,所以当 on_ready 它将机器人的昵称设置为
⇨ ⇨ m O d E r A t O r B o T ⇦ ⇦
我也在使用 repl.it:
https://repl.it/@CodingAndMemes/Moderator-Bot
【问题讨论】:
标签: 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
【问题讨论】:
标签: python discord.py repl.it
您需要使用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 获取 Guild 对象,请参阅 https://discordpy.readthedocs.io/en/latest/faq.html#how-do-i-get-a-specific-model。
我建议您在尝试更改它之前检查您的机器人的昵称是否已经不是您想要的第一个昵称,即使用Member.nick。这样您就不会执行不必要的 API 请求。如果这将在 on_ready 中尤其如此,因为它会在您每次启动机器人时这样做,并且可能在之后多次这样做。
我还建议您不要在 repl.it 上托管机器人。它可用于测试您是否正在这样做,但它不是为托管目的而设计的,尝试这样做有很多缺点。