如果用户在拥有特定角色时离开服务器,则禁止该用户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")