디스코드 로그 기록 봇 만들기

2026. 5. 2. 16:55·봇 개발 팁/Discord.py

서버를 운영하다 보면 나중에 다시 봐야 하는 순간이 자주 생깁니다.

메시지가 지워졌는지, 채널 이름이 바뀌었는지, 누가 어떤 변경을 했는지 기억만으로는 금방 한계가 옵니다.

이럴 때 기본 로그 기록 봇을 붙여 두면 운영 판단이 훨씬 쉬워집니다.

이번 글에서는 메시지 삭제, 수정, 채널 생성 로그를 한 채널에 남기는 기본형부터 만듭니다.

1. 로그 봇이 필요한 이유

초반 서버에서는 없어도 버틸 수 있습니다.

하지만 운영진이 둘 이상이거나 채널 변경이 잦아지면 로그가 없는 상태가 더 불편해집니다.

특히 아래 같은 상황에서 자주 필요해집니다.

  • 누가 메시지를 지웠는지 확인하고 싶을 때
  • 채널 이름이나 구조 변경 이력을 보고 싶을 때
  • 분쟁이나 문의에 대응할 근거가 필요할 때

보안 기본 구조를 먼저 보고 싶다면 디스코드 서버 보안 설정 체크리스트와 같이 보면 됩니다.

2. 로그 채널은 따로 둔다

일반 공지나 운영 채팅에 로그를 섞으면 금방 읽기 어려워집니다.

보통은 로그, mod-log, audit-log 같은 전용 채널을 따로 둡니다.

권한은 운영진과 봇만 보게 두는 구성이 무난합니다.

3. 로그 채널과 토큰 값 넣기

DISCORD_TOKEN=여기에_봇_토큰
LOG_CHANNEL_ID=로그채널_ID


로그 채널 ID 하나만 받아 두면 대부분 이벤트를 한곳으로 모을 수 있습니다.

4. 메시지 수정과 삭제를 남기는 코드

import os

import discord
from dotenv import load_dotenv

load_dotenv()

TOKEN = os.getenv("DISCORD_TOKEN")
LOG_CHANNEL_ID = int(os.getenv("LOG_CHANNEL_ID"))

intents = discord.Intents.default()
intents.guilds = True
intents.messages = True
intents.message_content = True
client = discord.Client(intents=intents)


async def send_log(embed: discord.Embed):
    channel = client.get_channel(LOG_CHANNEL_ID)
    if isinstance(channel, discord.TextChannel):
        await channel.send(embed=embed)


@client.event
async def on_ready():
    print(f"로그인 성공: {client.user}")


@client.event
async def on_message_delete(message: discord.Message):
    if message.author.bot or message.guild is None:
        return

    embed = discord.Embed(title="메시지 삭제 로그", color=discord.Color.red())
    embed.add_field(name="작성자", value=message.author.mention, inline=False)
    embed.add_field(name="채널", value=message.channel.mention, inline=False)
    embed.add_field(name="내용", value=message.content or "첨부파일 또는 빈 메시지", inline=False)
    await send_log(embed)


@client.event
async def on_message_edit(before: discord.Message, after: discord.Message):
    if before.author.bot or before.guild is None:
        return

    if before.content == after.content:
        return

    embed = discord.Embed(title="메시지 수정 로그", color=discord.Color.orange())
    embed.add_field(name="작성자", value=before.author.mention, inline=False)
    embed.add_field(name="채널", value=before.channel.mention, inline=False)
    embed.add_field(name="수정 전", value=before.content or "없음", inline=False)
    embed.add_field(name="수정 후", value=after.content or "없음", inline=False)
    await send_log(embed)


@client.event
async def on_guild_channel_create(channel: discord.abc.GuildChannel):
    embed = discord.Embed(title="채널 생성 로그", color=discord.Color.green())
    embed.add_field(name="채널 이름", value=channel.name, inline=False)
    embed.add_field(name="채널 종류", value=str(channel.type), inline=False)
    await send_log(embed)


if not TOKEN:
    raise ValueError("DISCORD_TOKEN 값이 없습니다.")

client.run(TOKEN)


처음에는 너무 많은 이벤트를 한 번에 붙이지 말아야 합니다.
삭제, 수정, 채널 생성 정도만 잡아도 운영 체감이 크게 달라집니다.

5. 로그가 남는 이벤트부터 좁게 확인

python main.py


그다음 테스트 채널에서 메시지를 하나 보내고 지워 봅니다.
메시지를 수정해 보고, 테스트 채널을 하나 새로 만들어 봅니다.
각 이벤트가 로그 채널에 임베드로 쌓이면 정상입니다.

6. 로그 채널에서 흔히 생기는 누락

  • 삭제 로그에 내용이 안 남는 경우 메시지가 캐시에 없었거나 첨부파일만 있던 경우일 수 있습니다.
  • 이벤트가 아예 안 들어오는 경우 인텐트가 부족하거나 봇이 채널을 못 보는 경우가 많습니다.
  • 로그 채널이 너무 시끄러운 경우 이벤트 종류를 줄이거나 카테고리별 로그 채널을 나눠야 합니다.

7. 로그는 많을수록 좋은 게 아니다

모든 이벤트를 다 기록하면 처음에는 든든해 보여도 곧 읽지 않게 됩니다.

실제로 필요한 기록부터 남겨야 합니다.

보통은 메시지 삭제, 수정, 입장/퇴장, 처벌 기록 정도가 먼저입니다.

8. 특화 로그는 따로 분리해도 된다

입장 퇴장 로그, 처벌 로그는 운영 목적이 다릅니다.

그래서 나중에는 별도 채널이나 별도 봇 구조로 나누는 경우가 많습니다.

이 부분은 다음 글들에서 각각 따로 정리합니다.

9. 상시 운영이라 배포가 거의 필수다

로그는 사건이 생긴 뒤에 켜는 기능이 아닙니다.

항상 켜져 있어야 의미가 있습니다.

실서버에 붙일 생각이라면 24시간 디스코드 봇 무료 호스팅, 디스호스트처럼 계속 켜져 있는 환경을 같이 준비해야 합니다.

10. 로그 다음에는 신고와 처벌 흐름을 묶는다

기본 로그 구조를 잡았다면 다음에는 멤버 입장과 퇴장 같은 서버 출입 로그를 따로 정리하는 흐름이 자연스럽습니다.

보안 관점에서 먼저 점검하고 싶다면 디스코드 서버 보안 설정 체크리스트와 디스코드 커뮤니티 서버 활성화 방법을 같이 보면 됩니다.

'봇 개발 팁 > Discord.py' 카테고리의 다른 글

디스코드 모달 입력창 기본 사용법  (0) 2026.05.01
모달 폼 접수 디스코드 봇 만들기  (0) 2026.04.30
지원서 접수 디스코드 봇 만들기  (0) 2026.04.29
고객 지원 대기열 디스코드 봇 만들기  (0) 2026.04.28
티켓 디스코드 봇 만들기  (0) 2026.04.25
'봇 개발 팁/Discord.py' 카테고리의 다른 글
  • 디스코드 모달 입력창 기본 사용법
  • 모달 폼 접수 디스코드 봇 만들기
  • 지원서 접수 디스코드 봇 만들기
  • 고객 지원 대기열 디스코드 봇 만들기
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

    • 홈
    • 디스호스트 사용 가이드
    • 디스코드 봇 호스팅, 24시간 서버 구동
    • 분류 전체보기 (94) N
      • 디스코드 (9)
      • 디스호스트 가이드 (12)
      • 봇 개발 팁 (33) N
        • Discord.js (11)
        • Discord.py (21) N
      • DiscordJS 개발 튜토리얼 (15)
      • 디스코드 서버 운영 (17)
      • 디스코드 봇 오류 해결 (7)
  • 링크

    • 디스호스트
  • hELLO· Designed By정상우.v4.10.3
디스호스트
디스코드 로그 기록 봇 만들기
상단으로

티스토리툴바