하루만 채널을 비웠는데 어디부터 읽어야 할지 모르겠다면, 지금 필요한 건 더 많은 답변이 아니라 따라잡는 속도입니다.
요약 봇의 역할은 챗봇처럼 대화를 이어 가는 것이 아니라 긴 스레드와 운영 채널에서 핵심만 압축해 주는 데 있습니다.
이 글에서는 최근 메시지를 읽어 OpenAI API로 요약한 뒤 임베드로 보여 주는 가장 작은 채널 따라잡기용 요약 봇을 만듭니다.
1. 요약 봇은 '다시 읽기 귀찮은 채널'에 붙일 때 값이 나온다
모든 서버에 필요한 기능은 아닙니다.
하지만 아래처럼 한 번 놓치면 다시 따라가기 귀찮은 채널에서는 체감이 분명합니다.
- 질문 채널에서 긴 대화 흐름 정리
- 운영 회의 내용 핵심만 다시 보기
- 이벤트 준비 채널 정리
2. 요약 범위부터 먼저 정할 것
기본 파이썬 봇과 .env 분리는 끝난 상태를 기준으로 갑니다.
아직 이 단계가 없다면 파이썬 디스코드 봇 만들기 처음부터 끝까지, discord.py 입문 가이드와 .env 환경변수로 디스코드 토큰 숨기기, 하드코딩 없이 안전하게 관리하는 법을 먼저 봐야 합니다.
3. 요약 채널과 API 키 넣기
DISCORD_TOKEN=여기에_봇_토큰
OPENAI_API_KEY=여기에_OpenAI_API_키
GUILD_ID=테스트_서버_ID
요약 봇은 토큰과 API 키를 둘 다 쓰므로 환경변수 분리가 필수입니다.
4. 요약 호출에 필요한 패키지 준비
pip install -U discord.py openai python-dotenv
이미 AI 챗봇을 만든 상태라면 대부분 설치돼 있을 가능성이 큽니다.
5. 최근 대화를 묶어 보내는 요약 코드
import os
import discord
from discord import app_commands
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
TOKEN = os.getenv("DISCORD_TOKEN")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
GUILD_ID = int(os.getenv("GUILD_ID"))
client_ai = OpenAI(api_key=OPENAI_API_KEY)
intents = discord.Intents.default()
intents.messages = True
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)
guild = discord.Object(id=GUILD_ID)
@client.event
async def on_ready():
await tree.sync(guild=guild)
print(f"로그인 성공: {client.user}")
@tree.command(name="요약", description="현재 채널 최근 대화를 요약합니다.", guild=guild)
@app_commands.describe(limit="불러올 최근 메시지 수")
async def summarize_channel(interaction: discord.Interaction, limit: int = 20):
if interaction.channel is None:
await interaction.response.send_message("채널 안에서만 사용할 수 있습니다.", ephemeral=True)
return
await interaction.response.defer(ephemeral=True)
messages = []
async for message in interaction.channel.history(limit=limit):
if message.author.bot:
continue
messages.append(f"{message.author.display_name}: {message.content}")
messages.reverse()
prompt = "\n".join(messages) or "요약할 메시지가 없습니다."
response = client_ai.responses.create(
model="gpt-4.1-mini",
input=[
{"role": "system", "content": "최근 디스코드 대화를 한국어로 짧고 건조하게 요약하세요."},
{"role": "user", "content": prompt},
],
)
summary = response.output_text.strip()
embed = discord.Embed(title="최근 대화 요약", description=summary[:4000], color=discord.Color.blurple())
await interaction.followup.send(embed=embed, ephemeral=True)
if not TOKEN or not OPENAI_API_KEY:
raise ValueError("환경변수 설정이 비어 있습니다.")
client.run(TOKEN)
핵심은 최근 메시지를 수집한 뒤 LLM에 한 번에 넘기는 부분입니다.
메시지 수를 너무 많이 잡으면 비용과 응답 시간이 같이 늘어나고, 너무 적게 잡으면 요약 가치가 사라집니다.
6. 요약 길이와 응답 시간을 같이 확인
python main.py
대화가 있는 채널에서 `/요약`을 실행합니다.
최근 메시지 핵심이 짧게 정리돼 나오면 정상입니다.
7. 토큰 수와 응답 지연에서 막히는 부분
- 빈 요약이 나오는 경우 최근 메시지가 거의 없거나 봇 메시지만 많은 채널일 수 있습니다.
- OpenAI 오류가 나는 경우 API 키 오타, 과금 제한, 모델 이름 문제를 먼저 봅니다.
- 응답이 너무 느린 경우 불러오는 메시지 수를 줄여야 합니다.
8. 요약 봇은 AI 기능보다 생산성 기능에 가깝다
잡담 채널에서는 재미용에 가깝지만, 운영 채널에서는 바로 생산성 기능이 됩니다.
공지 초안, 이벤트 준비, 문의 정리처럼 읽을 양은 길고 결론은 짧아야 하는 곳에서 특히 체감이 큽니다.
이벤트 흐름은 디스코드 이벤트 채널 기획법, 공지 구조는 디스코드 공지 채널 운영법과 같이 보면 좋습니다.
9. 상시 운영과 비용 관리는 같이 묶어 본다
AI 기능은 편하지만 호출 비용이 생깁니다.
명령어 사용량이 늘면 요약 범위와 빈도를 제한하고, 요약이 정말 필요한 채널에만 열어 둬야 합니다.
운영용 배포가 필요하다면 24시간 디스코드 봇 무료 호스팅, 디스호스트처럼 상시 실행 환경도 같이 준비해야 합니다.
10. 요약은 문장 정리와 채널 설계까지 이어진다
긴 대화가 정리된 뒤에는 디스코드 공지 채널 운영법까지 이어서 봐야 요약 결과를 실제 운영 문장에 붙일 수 있습니다.
'봇 개발 팁 > Discord.py' 카테고리의 다른 글
| 디스코드 경제 봇 만들기 (0) | 2026.05.16 |
|---|---|
| 디스코드 투표 봇 만들기 (0) | 2026.05.15 |
| 디스코드 출석 체크 봇 만들기 (0) | 2026.05.14 |
| 디스코드 레벨링 봇 만들기 (0) | 2026.05.13 |
| 초대 링크 추적 디스코드 봇 만들기 (0) | 2026.05.09 |