욕설 필터 디스코드 봇 만들기

2026. 5. 8. 16:57·봇 개발 팁/Discord.py

채팅이 활발해지면 광고보다 먼저 분위기를 무너뜨리는 것이 욕설과 공격적인 표현일 때가 많습니다.

운영진이 일일이 보고 지우기 시작하면 대응이 늦고, 같은 기준을 유지하기도 어렵습니다.

초반에는 완벽한 문맥 분석보다 기본 금칙어 필터를 먼저 두는 쪽이 현실적입니다.

이번 글에서는 금칙어 목록을 기준으로 메시지를 삭제하고 경고 로그를 남기는 기본 욕설 필터 봇을 만듭니다.

1. 욕설 필터는 어디까지 맡길까

텍스트 필터는 편하지만 한계도 분명합니다.

문맥을 완벽하게 읽지는 못하고, 일반 대화를 오탐할 수도 있습니다.

그래서 처음에는 아래처럼 두는 게 낫습니다.

  • 명확한 금칙어만 필터링
  • 애매한 표현은 운영진 신고나 검토로 넘김
  • 로그를 남겨 기준을 조정

신고 동선은 디스코드 신고 채널 운영 가이드와 같이 맞춰 둬야 합니다.

2. 금칙어 목록은 짧게 시작한다

초반에 목록을 너무 넓게 잡으면 오탐이 많아집니다.

명확하게 막고 싶은 단어부터 적게 시작해야 합니다.

예를 들면 아래처럼 둡니다.

BAD_WORDS = ["욕설예시1", "욕설예시2", "금칙어예시"]


실제 운영 전에는 서버 분위기와 기준에 맞는 목록으로 교체해야 합니다.

3. 금칙어 채널과 로그 값 정리

DISCORD_TOKEN=여기에_봇_토큰
LOG_CHANNEL_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"))
BAD_WORDS = ["욕설예시1", "욕설예시2", "금칙어예시"]

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


async def send_log(guild: discord.Guild, lines: list[str]):
    channel = guild.get_channel(LOG_CHANNEL_ID)
    if isinstance(channel, discord.TextChannel):
        embed = discord.Embed(title="욕설 필터 로그", description="\n".join(lines), color=discord.Color.red())
        await channel.send(embed=embed)


def has_bad_word(content: str) -> bool:
    lowered = content.lower()
    return any(word.lower() in lowered for word in BAD_WORDS)


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


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

    if not has_bad_word(message.content):
        return

    try:
        await message.delete()
        await message.channel.send(
            f"{message.author.mention} 운영 기준에 맞지 않는 표현이 감지되어 메시지를 삭제했습니다.",
            delete_after=5,
        )
        await send_log(
            message.guild,
            [
                f"대상: {message.author.mention}",
                f"채널: {message.channel.mention}",
                f"메시지: {message.content[:150] or '내용 없음'}",
            ],
        )
    except discord.Forbidden:
        print("메시지를 삭제할 권한이 없습니다.")


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

client.run(TOKEN)


핵심은 아주 단순합니다.
금칙어 목록에 걸리면 메시지를 지우고, 운영 로그에 남깁니다.

5. 운영 전에 꼭 봐야 할 점

욕설 필터는 목록 자체가 기준입니다.

따라서 어떤 표현을 자동 삭제하고, 어떤 표현은 운영진 검토로 남길지 먼저 합의해야 합니다.

초반에는 아래처럼 나누면 무난합니다.

  • 명확한 욕설: 자동 삭제
  • 애매한 비꼼, 공격성 표현: 신고나 경고 검토
  • 반복 위반: 처벌 로그와 연동

6. 오탐과 누락을 같이 확인하기

python main.py


테스트 채널에서 금칙어 목록에 있는 단어가 들어간 메시지를 보내 봅니다.
메시지가 삭제되고 로그 채널에 기록되면 정상입니다.

7. 금칙어 목록에서 흔한 실수

  • 평범한 단어도 잡히는 경우 부분 문자열 검사라 오탐이 생길 수 있습니다.

    금칙어를 더 구체적으로 바꾸거나 정규식으로 세분화해야 합니다.
  • 로그는 남는데 메시지가 안 지워지는 경우 Manage Messages 권한이 부족할 수 있습니다.
  • 운영진 발언까지 전부 잡히는 경우 역할 예외 처리를 넣지 않은 상태일 수 있습니다.

8. 링크 차단, 스팸 차단과 같이 붙여야 힘이 난다

욕설만 막고 광고 링크를 열어 두면 운영 체감이 약합니다.

반대로 광고만 막고 채팅 분위기를 방치해도 문제가 남습니다.

그래서 링크 차단 디스코드 봇 만들기와 스팸 방지 디스코드 봇 만들기를 같이 봐야 합니다.

9. 반복 위반은 기록으로 남겨야 누적이 보인다

삭제만 하고 기록이 없으면 나중에 경고 기준이 흔들립니다.

반복 위반은 처벌 로그나 신고 채널과 이어 봐야 합니다.

처벌 기준은 처벌 로그 디스코드 봇 만들기과 같이 정리해 두면 좋습니다.

10. 금칙어만으로 끝내지 말고 운영 동선까지 묶는다

기본 금칙어 필터까지 붙였다면 다음에는 유입 경로를 분석하는 초대 링크 추적 구조로 넘어갈 수 있습니다.

지금 단계에서 운영 채널 구조를 다시 보고 싶다면 디스코드 로그 기록 봇 만들기와 디스코드 서버 보안 설정 체크리스트을 같이 보면 됩니다.

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

링크 차단 디스코드 봇 만들기  (0) 2026.05.07
스팸 방지 디스코드 봇 만들기  (0) 2026.05.06
처벌 로그 디스코드 봇 만들기  (0) 2026.05.04
입장 퇴장 로그 디스코드 봇 만들기  (0) 2026.05.03
디스코드 로그 기록 봇 만들기  (0) 2026.05.02
'봇 개발 팁/Discord.py' 카테고리의 다른 글
  • 링크 차단 디스코드 봇 만들기
  • 스팸 방지 디스코드 봇 만들기
  • 처벌 로그 디스코드 봇 만들기
  • 입장 퇴장 로그 디스코드 봇 만들기
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

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

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

티스토리툴바