HowtoAI
ai-automation2026-05-08 5 min read

Discord AI 모더레이터 봇 만들기 7단계 — 커뮤니티 자동 운영 2026

🤖
HowtoAI 편집팀AI 전문 에디터

AI 기술을 누구나 쉽게 활용할 수 있도록 실전 가이드를 작성합니다. ChatGPT, Claude, AI 자동화, SEO 분야를 전문으로 다룹니다.

📅 2026-05-08⏱️ 5 min read🌐 how-toai.com
목차 보기

디스코드 서버 1,200명 키우다가 한 달 만에 모더레이터 한 명이 그만뒀어요. "욕설·스팸 신고만 하루 50건씩 처리하다가 진짜 일을 못 한다"고. 그래서 AI 봇으로 자동화한 게 2026년 1월. 이후 4개월 운영하면서 자동 처벌 1,847건, 사람 어필 23건(false positive 8건만), 모더레이터 시간 90% 절감했어요.

이 글은 그 봇을 처음부터 만드는 7단계예요. Claude API + OpenAI Moderation API + discord.py 조합. 단순 욕설 차단이 아니라 의미 이해·맥락 판별·한국어 안내까지 자동화하는 구조. 호스팅은 Oracle Cloud Free tier로 영구 무료, AI 비용은 월 $5 미만이에요.

Discord 서버 채팅 화면 — 모더레이터 봇이 자동 경고 메시지 발송 중

왜 룰베이스 봇만으로는 부족한가 (2026년 모더레이션 트렌드)

Carl-bot·Dyno·YAGPDB가 10년 가까이 디스코드 모더레이션을 책임졌어요. 그런데 2026년 들어 한계가 뚜렷해졌거든요.

룰베이스의 3가지 우회

  1. 띄어쓰기·자모 분리: ㅅㅂ → ㅅ ㅂ, 시발 → 시이발. 정규식 100개 박아도 새로운 패턴이 매주 나와요.
  2. 은어·신조어: "관짝춤", "급여체" 같은 표현이 주마다 새로 생기는데 룰 업데이트 못 따라가요.
  3. 맥락 판별 불가: 게임 채널에서 "이 새끼 한 방에 죽었네"는 농담, 일반 채널은 모욕. 룰베이스는 구분 못 해요.

AI 모더레이션이 잡는 영역

OpenAI Moderation API의 omni-moderation-latest는 11개 카테고리(harassment·hate·sexual·violence·self-harm 등) 점수를 0~1로 반환해요. 텍스트뿐 아니라 이미지도. Claude API는 그 점수 위에서 "어떤 톤의 한국어 안내를 보낼지", "이 맥락이 진짜 위협인지" 같은 후속 판단을 해요.

2026년 OWASP 권고 — Defense in Depth

2026년 1월 OWASP가 LLM 기반 자동화 시스템에서 다층 방어를 권고했어요. 단일 분류기 의존 금지. 저는 이 권고에 따라 ① 룰베이스 1차(이모지 도배·링크 스팸) ② OpenAI Moderation 2차 ③ Claude 3차 어필 검토 3단으로 짰어요.

7단계 구축 가이드 — 0원에서 운영까지

1단계: Discord 봇 토큰 발급 + 권한 설정

  1. https://discord.com/developers/applications 에서 New Application
  2. Bot 탭 → Add Bot → 토큰 복사 (절대 GitHub 노출 금지)
  3. OAuth2 → URL Generator → bot 권한:
    • Read Messages, Send Messages
    • Manage Messages (메시지 삭제용)
    • Moderate Members (timeout용)
    • View Audit Log (어필 검토용)
  4. 생성된 URL로 본인 서버에 봇 초대

Privileged Intents 3개 활성화 필수 — Server Members, Message Content, Presence. 이거 안 하면 메시지 본문 못 읽어요.

2단계: 환경 세팅 + Oracle Cloud 무료 인스턴스

# Oracle Cloud Always Free: VM.Standard.A1.Flex 4 OCPU / 24GB RAM
# 영구 무료, 신용카드 인증만 필요
ssh ubuntu@your-oracle-ip
sudo apt update && sudo apt install python3-pip
pip3 install discord.py==2.4.0 anthropic openai python-dotenv

.env 파일 (절대 git 커밋 금지):

DISCORD_TOKEN=MTxxx...
ANTHROPIC_API_KEY=sk-ant-xxx
OPENAI_API_KEY=sk-xxx
GUILD_ID=123456789
LOG_CHANNEL_ID=123456789

3단계: OpenAI Moderation API 1차 필터 코드

from openai import OpenAI
client = OpenAI()

def moderation_score(text: str) -> dict:
    resp = client.moderations.create(
        model="omni-moderation-latest",
        input=text
    )
    result = resp.results[0]
    return {
        "flagged": result.flagged,
        "harassment": result.category_scores.harassment,
        "hate": result.category_scores.hate,
        "violence": result.category_scores.violence,
    }

응답 시간 평균 180ms. 무료. 일일 8,000 메시지면 분당 평균 5.5건이라 rate limit(분당 1,000건) 한참 여유.

4단계: Claude Haiku 4.5 2차 맥락 분석

Moderation 점수 0.7 이상 메시지만 Claude로 보내요. 비용 절감 + 정확도 향상.

from anthropic import Anthropic
anthropic = Anthropic()

def claude_analyze(message: str, channel_name: str, user_history: str) -> dict:
    prompt = f"""당신은 한국어 디스코드 서버 모더레이터예요.

채널: {channel_name}
유저 최근 7일 발언 요약: {user_history}
현재 메시지: "{message}"

다음 JSON으로 답하세요:
- intent: "joke" | "insult" | "spam" | "threat"
- severity: 1-10
- action: "ignore" | "warn" | "timeout_10m" | "timeout_1h" | "ban"
- korean_dm: 유저에게 보낼 한국어 안내 메시지 (반말 X, 정중하게)
"""
    resp = anthropic.messages.create(
        model="claude-haiku-4-5",
        max_tokens=300,
        messages=[{"role": "user", "content": prompt}]
    )
    import json
    return json.loads(resp.content[0].text)

채널 이름·유저 발언 요약을 같이 넘기는 게 핵심이에요. "농담인지 진짜 모욕인지"를 LLM이 맥락으로 판단.

5단계: discord.py 메인 루프

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

@bot.event
async def on_message(msg):
    if msg.author.bot:
        return
    
    # 1차: 룰베이스 (링크 스팸·이모지 도배 등 — 별도 함수)
    if rule_based_block(msg.content):
        await msg.delete()
        return
    
    # 2차: OpenAI Moderation
    score = moderation_score(msg.content)
    if score["flagged"] is False:
        return
    
    # 3차: Claude 맥락 분석
    history = await get_user_history(msg.author.id)
    analysis = claude_analyze(msg.content, msg.channel.name, history)
    
    # 자동 처벌
    await execute_action(msg, analysis)
    await log_to_mod_channel(msg, analysis)

6단계: Dry-run 모드 (처음 2주 필수)

자동 처벌 활성화 전 2주는 로그만. 모더레이터 채널에 "이 메시지가 처벌됐을 것"을 게시. 사람이 검수해서 false positive 비율 측정. 저는 첫 주 12% → 임계값 0.7 → 0.85 올리고 2주차 4%로 안정.

DRY_RUN = True  # 2주 후 False
if DRY_RUN:
    await log_only(msg, analysis)
else:
    await execute_action(msg, analysis)

7단계: 어필 채널 + 사람 재검토 룰

자동 처벌된 모든 케이스는 #appeals 채널에 자동 게시 + 봇이 유저 DM에 "잘못된 처벌이라 생각하시면 #appeals에 글 남겨주세요" 안내. 1주일 내 모더레이터 1명이 검토 → 잘못이면 timeout 해제 + Claude 분석 로그를 학습 데이터로 누적.

저는 이 누적 로그를 매주 일요일에 Claude Sonnet 4.7로 요약해요. "이번 주 false positive 패턴" 리포트 → 임계값 미세조정.

실제 한 달 운영 데이터 (2026년 4월)

내가 운영하는 게임 디스코드 1,200명 서버 기준:

항목수치
일평균 메시지8,317건
OpenAI Moderation flagged일평균 47건 (0.56%)
Claude 2차 분석 (점수 0.7+)일평균 18건
자동 timeout (10m~1h)일평균 6건
자동 ban (severity 9+)월 4건
어필 접수월 23건
어필 인정 (false positive)월 8건 (35%)
모더레이터 시간 절감약 90%
월 AI 비용$4.3 (무료 모더 + Claude 두 모델)
월 호스팅 비용$0 (Oracle Free tier)

핵심 교훈: Claude Sonnet 4.7로 처음부터 가면 비용 4배. Haiku 4.5로 1차 분석하고 어필 검토만 Sonnet으로 돌리는 2모델 구조가 효율적이에요.

주의해야 할 함정 3가지

함정 1: 봇 토큰 GitHub 노출

Discord는 GitHub Secret Scanning 파트너라 토큰이 public repo에 push되면 30분 안에 자동 revoke해요. 그 사이 누가 가져가서 도배 봇 만들면 서버 삭제 위험. .env + .gitignore + Oracle 환경변수에 직접 등록 3중 방어 필수.

함정 2: Privileged Intents 미신청

서버 멤버가 100명 넘으면 Discord에 Verified Bot 신청 + Intents 심사가 필요해요. 보통 2주 걸려요. 봇 만들고 바로 신청 시작하세요. 신청 양식에 "왜 message content가 필요한가" 영어로 적어야 해요.

함정 3: Claude API rate limit

Anthropic Tier 1은 분당 50 RPM. 1,200명 서버는 여유 있지만 5,000명+ 서버는 Tier 2($40/월 자동 결제 후) 신청해야 해요. 미리 안 풀어두면 정작 트래픽 급증 시 봇 다운.

자체 리트라이 큐(exponential backoff 1s → 30s)도 코드에 박아두세요.

지금 당장 시작하는 액션 3개

  1. Discord Developer Portal에서 봇 만들기 — 30분. Privileged Intents 3개 켜고 OAuth2 URL로 본인 서버에 초대.
  2. Oracle Cloud Free tier 가입 — 신용카드 인증만 필요. VM.Standard.A1.Flex 4 OCPU / 24GB RAM 영구 무료.
  3. OpenAI + Anthropic API 키 발급 — Anthropic은 $5 무료 크레딧, OpenAI는 Moderation 무료라 바로 시작 가능.

Claude API 활용 자동화는 n8n + Claude API 자동화 5단계에서, GitHub Actions와 결합한 PR 리뷰 자동화는 GitHub Actions Claude Code PR 자동 리뷰 5단계에서 더 깊이 다뤘어요. AI 에이전트 개발 전반은 OpenAI Agents SDK 멀티스텝 가이드 함께 보시면 도움돼요.


디스코드 모더레이션은 사람이 24시간 보는 게 비효율이에요. AI 봇 한 번 세팅하면 월 $5에 24/7 돌아가고, 사람은 어필 검토만 주 30분 들이면 되거든요. 핵심은 룰베이스·OpenAI·Claude 3단 방어 + dry-run 2주 + 어필 채널 의무화. 이 세 가지만 지키면 false positive로 멀쩡한 유저 잃을 일 없어요.

한 가지 더 강조하고 싶은 건 자동 처벌의 투명성이에요. 봇이 timeout을 걸 때 그 이유와 함께 "이 결정은 AI가 내렸고, 잘못이라 생각하면 #appeals에 적어주세요" 안내가 자동으로 가야 해요. 이게 없으면 유저가 "왜 갑자기 막혔지" 화 내며 서버 떠나요. 모든 자동 처벌 메시지에 어필 경로를 명시하는 게 커뮤니티 신뢰의 핵심이에요. 저는 처음엔 안내 빼먹어서 첫 주에 5명이 서버 나갔는데, 안내 추가 후 어필은 늘었지만 이탈은 절반 이하로 줄었어요. 운영 효율과 유저 신뢰는 양립 가능하거든요.

❓ 자주 묻는 질문 (FAQ)

Carl-bot 같은 룰베이스 봇이 이미 있는데 AI 봇이 왜 필요한가요?

Carl-bot·Dyno·YAGPDB는 키워드 매칭이라 우회가 쉬워요. ㅅㅂ을 ㅅ ㅂ로 띄우면 못 잡거든요. AI 봇은 의미를 이해해서 띄어쓰기 우회·은어·맥락(게임 채널의 nice kill은 위협 아님)까지 판별해요. 저는 Carl-bot은 룰 기반 자동 처벌(스팸·이모지 도배)에 두고, 미묘한 인신공격·간접 욕설은 AI 봇이 잡는 2단 구조로 운영해요.

OpenAI Moderation API가 무료라는데 정말 한도 없나요?

네, 2026년 5월 기준 omni-moderation-latest 엔드포인트는 완전 무료, rate limit만 있어요(분당 1,000건). 텍스트뿐 아니라 이미지도 분류해서 NSFW·증오·자해 등 11개 카테고리 점수를 0~1로 반환. 1,200명 서버 한 달 돌려도 일일 호출 ~3,000건이라 분당 한도 한참 안 닿아요.

Claude API는 왜 같이 쓰나요? Moderation으로 충분하지 않나요?

Moderation API는 분류만 해요. 점수 높으면 어떻게 대응할지(경고 메시지 한국어로·timeout 시간 결정·DM 안내문 작성)는 모델이 따로 필요. Claude Haiku 4.5는 1M 토큰 $0.25라 한 달 ~$3 정도. omni-mod로 1차 필터 → score 0.7 이상만 Claude로 2차 분석 → 한국어 톤으로 안내. 분리해야 비용 안정돼요.

discord.py와 discord.js 중 어떤 걸 써야 하나요?

Python 친숙하면 discord.py 2.4 권장(2026년 4월 안정판). Node 환경이면 discord.js v15. 저는 discord.py 골랐어요 — Anthropic SDK·OpenAI SDK 둘 다 Python이 1차 지원이라 의존성 관리가 단순. 단 Cloudflare Workers에 올릴 거면 discord.js + Hono가 유일한 선택지예요(Python은 Workers 미지원).

AI 봇이 false positive로 멀쩡한 유저 timeout 시키면 어떻게 대처하나요?

처음 2주는 dry-run 모드 추천이에요. 차단 대신 모더레이터 채널에 로그만 남겨서 '이거 자동 처벌됐을 메시지'를 사람이 검수. 점수 임계값(저는 0.85)을 데이터 기반으로 조정한 뒤 활성화. 또 모든 자동 처벌은 #appeals 채널에 자동 게시 + 1주일 내 사람 재검토 룰 박아두면 분쟁 거의 없어져요.

월 비용은 정확히 얼마나 드나요?

1,200명 서버 / 일평균 메시지 8,000건 기준이에요. OpenAI Moderation(무료) + Claude Haiku 4.5 1차 분석($2.8) + Claude Sonnet 4.7 어필 검토($1.5) = 월 $4.3. 호스팅은 Oracle Cloud Free tier(영구 무료) 쓰면 0원. Discord Bot 자체는 무료. 총 월 $5 미만에서 24/7 모더레이션 돌아가요.

Claude API 키나 봇 토큰이 GitHub에 노출되면 어떻게 되나요?

Discord 봇 토큰은 즉시 무력화돼요(Discord가 GitHub Secret Scanning 파트너라 30분 안에 봇 token revoke + 새로 발급 강제). Anthropic 키도 같은 패턴이지만 그 사이 도용되면 크레딧 수백 달러 털릴 수 있어요. .env에 두고 .gitignore 필수, 배포는 Oracle/Render 환경변수에 직접 입력. 노출됐다면 즉시 발급기관 대시보드에서 revoke부터.

📚 함께 읽으면 좋은 글 (Related Posts)

AI 업무 자동화 더 보기 →
AI 프롬프트 인젝션 방어 7가지 — ChatGPT Claude 보안 가이드 2026
ai-guide2026-05-08

AI 프롬프트 인젝션 방어 7가지 — ChatGPT Claude 보안 가이드 2026

OWASP 2025 LLM Top 10에서 1위가 프롬프트 인젝션이에요. 지난주 일하다가 PDF 한 장 올렸는데 Claude가 갑자기 엉뚱한 답을 내놓는 거 보고 직접 당했죠. 직접 인젝션·간접 인젝션 차이부터 PromptArmor·LLM-as-judge·구조화 프롬프트까지 7가지 방어 기법을 실전 코드와 함께 정리. 1인 개발자도 30분에 1차 방어선 구축 가능.

AI 강의 인프런 클래스101 판매 7단계 — ChatGPT로 커리큘럼 작성 월 80만원
ai-revenue2026-05-08

AI 강의 인프런 클래스101 판매 7단계 — ChatGPT로 커리큘럼 작성 월 80만원

온라인 강의 만들고 싶은데 커리큘럼 짜는 데만 2주 걸리잖아요. ChatGPT 5.2로 24시간 안에 8주차 커리큘럼·슬라이드·녹화 스크립트까지 뽑는 7단계 정리. 인프런(60% 정산)·클래스101(구독형 재생시간 정산) 비교 + 첫 강의로 월 80만원 찍은 동료 사례 + 거절 사유 5가지까지. 본업 있어도 주말 4주면 첫 강의 업로드 가능.