我已经在齿轮箱里设置了一个基本的留言。根据用户是被禁止/踢掉还是自愿离开,我如何发送不同的信息?
我已经尽可能多地查看了一下,而且由于on_member_remove事件只提供了成员对象,所以如果不使用非常不可靠的审计日志,我就无法找到如何做到这一点。
当我的机器人禁止一个成员检查时,我试着找出一个变量,但是我找不到一个合理的方法去检查,而且当一个成员被一个工作人员手动禁止的时候,它显然不会起作用。
下面是基本的离开侦听器:
@commands.Cog.listener()
async def on_member_remove(self, member):
chan = self.bot.get_channel(805991434330570793)
await chan.send(f"{member.display_name}#{member.tag} just left the server.")还有一些伪描述我想要的东西:
@commands.Cog.listener()
async def on_member_remove(self, member):
chan = self.bot.get_channel(805991434330570793)
methods = ["banned", "kicked"]
if member.leave_method in methods:
await chan.send(f"{member.display_name}#{member.tag} was just banned from the server.")
else:
await chan.send(f"{member.display_name}#{member.tag} just left the server.")发布于 2021-06-01 19:45:34
如果您的bot具有ban_members权限,您可以使用guild.fetch_ban检查该成员是否被禁止,否则将引发discord.NotFound。
@commands.Cog.listener()
async def on_member_remove(self, member):
channel = self.bot.get_channel(805991434330570793)
try:
banned = await member.guild.fetch_ban(member)
except discord.NotFound:
banned = False
if banned:
await channel.send(f"{member} was just banned from the server.")
else:
await channel.send(f"{member} just left the server.")也有一个单独的监听器只针对bans,on_member_ban,它要求启用Intents.bans。对于kick来说,检查审计日志将是我所知道的唯一方法,尽管正如您提到的那样,它可能有点不可靠。
https://stackoverflow.com/questions/67794611
复制相似问题