Логи дискорд боту
Делаю бота, столкнулся с проблемой, нужно делать логи, искал в документации, на других сайтах, единственное что я находил, так это код который выдаёт ошибки и прочее...Требуется вывести аудит в определенный чат, вместе с подробностями(По типу какое содержание было у сообщения которое удалили и т.д.) Есть ли какие то русские ресурсы чтобы подробнее почитать об этом, или код как можно сделать логи и чтобы бот их отправлял?
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 шт):
Логирования пользователей
Это можно сделать через 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, этот метод может вам выдавать:
Изменения названия сервера
Изменен канала AFK
Изменение тайм-аута AFK канала
и т.д.
@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)#когда роль была создана