'Discord Bot AuditLogDiff
I tried to make logs of role changes, but for an hour I can't figure out what my mistake is. I attached the code and error below
@bot.event
async def on_guild_role_update(before, after):
if before.name == after.name or before.color == after.color or before.permissions == after.permissions:
return
now = datetime.now()
embed = discord.Embed(
title='Role has changed',
color=0xfaa41b
)
embed.set_footer(text=f'ID: {before.id} • Today in {now.hour}:{now.minute}')
if before.name != after.name:
embed.add_field(name='Name:', value=f'{before.name} => {after.name}', inline=False)
if before.color != after.color:
embed.add_field(name='Color:', value=f'{before.color} => {after.color}', inline=False)
if before.permissions != after.permissions:
async for event in before.guild.audit_logs(limit=None, action=discord.AuditLogAction.role_update):
if getattr(event.target, 'id', None) == before.id:
continue
embed.add_field(name='Permissions:', value=", ".join([getattr(p, "mention", p.id) for p in event.before.permissions or event.after.permissions]), inline=False)
embed.add_field(name='Moderator:', value=f'{event.user}({event.user.mention})', inline=False)
await bot.get_channel(911633362949648464).send(embed=embed)
Error:
File "C:\Users\Хозяин\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event await coro(*args, **kwargs) File "D:\bot\main.py", line 39, in on_guild_role_update embed.add_field(name='Permissions:', value=", ".join([getattr(p, "mention", p.id) for p in event.before.permissions or event.after.permissions]), inline=False) AttributeError: 'AuditLogDiff' object has no attribute 'permissions'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
