I'm trying to make a discord bot that gets audit log entries and prints them out to me, but I have no clue how to go about it.
This is what I have so far:
from discord.ext import commands
import discord
import time
client = commands.Bot(command_prefix='!')
for entry in discord.Guild.audit_logs(action=discord.AuditLogAction.ban):
print(f'{entry.user} banned {entry.target}')
@client.event
async def on_ready():
print(f'Logged in as {client.user}. Ready to go.')
client.run(token)
It throws this error:
TypeError: audit_logs() missing 1 required positional argument: 'self'
I've read the documentation, but I am still no closer to solving this.
How do I get this bot to read each entry made into the audit log and then print it out to the console?
CodePudding user response:
If you want to access the audit logs of the guild that a command has been invoked in, you should access through context, so use this:
@client.command()
async get_bans(ctx):
async for entry in ctx.guild.audit_logs(action=discord.AuditLogAction.ban):
print(f'{entry.user} banned {entry.target}')
If you want to get a specific guild's audit logs you can use:
async for entry in client.get_guild(guild_id).audit_logs(action=discord.AuditLogAction.ban):
print(f'{entry.user} banned {entry.target}')