python-3.x 是可能的打印在公会通道谁禁止了机器人,之前机器人实际上离开服务器上Discord.py?

fdx2calv  于 2023-07-01  发布在  Python
关注(0)|答案(1)|浏览(163)

我建立了一个简单的Discord.py机器人来开一些朋友的玩笑,但有时有人禁止我的机器人,我想知道我是否可以在机器人实际离开服务器之前打印有罪。
经过几次测试后,请注意,我可以在频道上打印机器人正在被禁止:

async def report(message):
    channel = bot.get_channel(CHANNEL_LISTEN_ID)
    await channel.send(message)

@bot.event
async def on_member_ban(guild, member):
    if member.id == bot.user.id:
        await report(f'HEELLPPPP! SOMEONE IS BANNING ME, DAMN IT!')
    else:
        await report('<:pepecop:1114663204971360316>')

Bot在离开服务器之前打印消息。但当我尝试获取谁禁止他,我猜是不是时间不够,机器人离开服务器之前的答案:

async def report(message):
    channel = bot.get_channel(CHANNEL_LISTEN_ID)
    await channel.send(message)

@bot.event
async def on_member_ban(guild, member):
    if member.id == bot.user.id:
        ban_log = await guild.audit_logs().find(lambda log: log.action is discord.AuditLogAction.ban)
        await report(f'HEELLPPPP! <@{ban_log.user.id}> IS BANNING ME, DAMN IT!')
    else:
        await report('<:pepecop:1114663204971360316>')

这里没有任何东西被打印在通道上,并且不会离开服务器。这可能吗

6mzjoqzu

6mzjoqzu1#

从技术上讲,这是不可能的,因为找出谁禁止了你的机器人的唯一方法是查看审计日志。但是,一旦您的机器人被禁止,它就不再有权访问服务器的审计日志。也就是说,你的机器人可以找出谁禁止了另一个用户,但不能找出谁禁止了自己。

相关问题