Логи дискорд боту

Делаю бота, столкнулся с проблемой, нужно делать логи, искал в документации, на других сайтах, единственное что я находил, так это код который выдаёт ошибки и прочее...Требуется вывести аудит в определенный чат, вместе с подробностями(По типу какое содержание было у сообщения которое удалили и т.д.) Есть ли какие то русские ресурсы чтобы подробнее почитать об этом, или код как можно сделать логи и чтобы бот их отправлял?

P.S. На офф. документации нашёл что то похожее на логи, но это не то что мне нужно.

Вот что я делал в попытках написать логи

import logging

logger = logging.getLogger('discord')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w')
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
logger.addHandler(handler)

Ответы (1 шт):

Автор решения: xZartsust

Логирования пользователей

Это можно сделать через event

К примеру, если вы хотите что бы каждое сообщение которое отправляется в чат отображалось в консоле, тогда используйте on_message:

@client.event
async def on_message(message):
    print('Message: ', message.content)# содержимое сообщения
    print('Member: ', message.member)# кто отправил сообщение

Также вы можете посмотреть что содержит в себе message

@client.event
async def on_message(message):
    print(message)# просто напишите что-то в чат и посмотрите в консоль

Хотите узнать что происходит с пользователем, к примеру, какую роль он получил, делайте через on_member_update:

@client.event
async def on_member_update(before, after):
    print(before.member.top_role)#выведет самую высокую роль до изменения
    print(after.member.top_role)#выведет самую высокую роль после изменения

Также можете посмотреть что содержит в себе переменные before и after

@client.event
async def on_member_update(before, after):
    print('Before: ', before)
    print('After', after)

Больше методов можете посмотреть здесь

Логирования самого сервера

Тут уже больше возможностей, я покажу несколько, а ссылку на остальные я оставлю снизу.

И так начнем с on_guild_channel_create(посмотреть что содержит в себе channel можете так само как я показывал пару раз с верху):

@client.event
async def on_guild_channel_create(channel):
    print('Channel name: ', channel.name)#выведет имя канала
    print('Channel category: ', channel.category)#выведет категорию где он находится
    print('Channel id: ', channel.id)#выведет айди канала
    print('Channel created at', channel.created_at)#выведет час и дату когда он был создан

На на очереди в нас on_guild_update, этот метод может вам выдавать:

  1. Изменения названия сервера

  2. Изменен канала AFK

  3. Изменение тайм-аута AFK канала

  4. и т.д.

    @client.event
    async def on_guild_update(before, after):
        print('Before guild name: ', before.guild.name)
        print('After guild name: ', after.guild.name)
    
        print('Before guild banner_url: ', before.guild.banner_url)#банер сервера до
        print('After guild banner_url: ', after.guild.banner_url)#банер сервера после
    
        print('Before guild icon_url: ', before.guild.icon_url)#значок сервера до
        print('After guild icon_url: ', after.guild.icon_url)#значок сервера после
    

И на последок on_guild_role_created

@client.event
async def on_guild_role_created(role):
    print('Role name:', role.name)#имя роли
    print('Role color:', role.color)#цвет роли
    print('Role id:', role.id)#айди роли
    print('Role permissions:', role.permissions)#разрешения роли
    print('Role created_at:', role.created_at)#когда роль была создана

Больше методов для логирования сервера

→ Ссылка