我建立了一个简单的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>')
这里没有任何东西被打印在通道上,并且不会离开服务器。这可能吗
1条答案
按热度按时间6mzjoqzu1#
从技术上讲,这是不可能的,因为找出谁禁止了你的机器人的唯一方法是查看审计日志。但是,一旦您的机器人被禁止,它就不再有权访问服务器的审计日志。也就是说,你的机器人可以找出谁禁止了另一个用户,但不能找出谁禁止了自己。