Python 如何让机器人在发生成员禁令事件时获取原因?
这是我的密码Python 如何让机器人在发生成员禁令事件时获取原因?,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,这是我的密码 @commands.Cog.listener() async def on_member_ban(self, guild, user: discord.User): db = sqlite3.connect("./data/modlog.db") cursor = db.cursor() cursor.execute( f"SELECT channel_id FROM auditlog WHERE guild_id = {guild.id}"
@commands.Cog.listener()
async def on_member_ban(self, guild, user: discord.User):
db = sqlite3.connect("./data/modlog.db")
cursor = db.cursor()
cursor.execute(
f"SELECT channel_id FROM auditlog WHERE guild_id = {guild.id}"
)
result = cursor.fetchone()
if result is None:
return
else:
embed = discord.Embed(title=f"Member Banning Case", colour=discord.Colour.red())
embed.add_field(name="Member Name", value=user.name)
embed.add_field(name="Reason", value=user.)
embed.set_footer(text=f"User ID: {user.id}")
embed.timestamp = datetime.datetime.utcnow()
channel = self.client.get_channel(id=int(result[0]))
await channel.send(embed=embed)
我想让我的bot获取禁止的原因,可以这样做吗?当禁止服务器上的用户时,您可以提供一个原因。它也可以是空的。
然后调用您在代码中引用的成员上的
on\u ban()
:这样您就得到了
guild
和user
对象
只有在审计日志中才会说明禁令的原因。您可以搜索您的审核日志。
这只是一个例子。这将返回有原因的最后一个事件。这可能是任何事件(用户取消禁止、用户禁止、消息删除等)
事件
变量是此类的一个实例:它是通过
Guild.audit\u logs()
检索的:
您必须将谓词
方法调整为:
def predicate(event):
return event.action is discord.AuditLogAction.ban
一旦您拥有带有用户ban的事件对象,您就可以使用事件.reason
提取禁止原因
(注意:我没有对此进行测试。我是根据文档编写的。)
实际的编程和测试你必须自己做。我给了您一些指导,告诉您必须查找和使用哪些方法。您可以打电话获取
BanEntry
,这是有原因的
def predicate(event):
return event.action is discord.AuditLogAction.ban