如果用户在拥有特定角色时离开服务器,则禁止该用户discord.py

我想这样做,如果用户在他们拥有Muted[Banned]角色被永久禁止的情况下离开服务器。

这是我试过的代码:

@bot.event
async def on_member_remove(ctx, member, reason=None):
    role="[Banned]"
    guild = ctx.guild
    if role in member.roles:
        await guild.ban(discord.Object(id=member.id), reason="Leaved the server when soft banned")

*这只是一个尝试,只有被禁止的角色。

用户不会被禁止,也没有错误或任何可以帮助我解决问题的内容。

回答

member.roles返回一个角色列表

您需要获取 Role 对象,您可以使用的一种方式是:

role = discord.utils.find(lambda r: r.name == '[Banned]', member.guild.roles)
role = discord.utils.find(lambda r: r.name == '[Banned]', member.guild.roles)

on_member_remove接受成员。你不能有reason或 Context( ctx)

还请确保您已启用会员意图。您可以通过转到此处然后选择Bot-> SERVER MEMBERS INTENT来执行此操作

您需要使用以下方法在代码中启用意图:

@bot.event
async def on_member_remove(member):
    role = discord.utils.find(lambda r: r.name == '[Banned]', member.guild.roles)
    guild = member.guild
    if role in member.roles:
        await guild.ban(discord.Object(id=member.id), reason="Leaved the server when soft banned")


以上是如果用户在拥有特定角色时离开服务器,则禁止该用户discord.py的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>