如果用户还没有昵称,我希望能够让机器人自动将成员用户名更新为特定昵称

时间:2021-01-21 14:07:37

标签: python discord discord.py

@Cog.listener()
async def on_member_update(self, before, after):
    n = before.nick
    if n:
        if n.lower().count("★") <= 0:
            await after.edit(nick="NICKNAME")

如果用户尝试在没有星号的情况下更改昵称,则上面的代码会将用户昵称更改为“NICKNAME”。但我想让机器人自动更新他们的用户名,并将其更改为星形符号昵称,而无需用户自己手动完成,如果他们还没有在用户名中使用它的话。

2 个答案:

答案 0 :(得分:0)

在他们加入服务器后查看要分配的事件 on_member_join。对于现有成员,您可以定期迭代 guild.members 并在必要时调整所有成员。

答案 1 :(得分:0)

您可以使用 on_member_join 事件并在有人加入公会时更改昵称

async def on_member_join(member):
    await member.edit(nick="NICKNAME")

注意:当有人加入公会时,这会起作用,但它不会改变已经在公会中的用户的昵称,您可以为此创建一个简单的命令< /em>

async def whatever(ctx):
    for member in ctx.guild.members:
        if not "★" in member.nick: # Or whatever character
            await member.edit(nick="NICKNAME")

参考: