Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让机器人在发生成员禁令事件时获取原因?_Python_Python 3.x_Discord_Discord.py - Fatal编程技术网

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