디스코드 봇에 ChatGPT 기능을 추가하면, 채팅에서 자연스럽게 AI와 대화할 수 있습니다. 최근에는 OpenAI의 API를 활용해 다양한 챗봇 기능을 구현하는 사례가 많아졌습니다. 여기서는 Node.js 환경에서 openai와 discord.js 라이브러리를 활용하는 기본적인 연동 방법을 소개합니다.
준비 과정
- OpenAI API 키 발급
OpenAI 공식 홈페이지에서 회원가입 후, API 키를 발급받으세요. - 패키지 설치
npm install openai discord.js
명령어로 필요한 라이브러리를 설치합니다. - 환경변수 관리
API 키와 디스코드 토큰은.env
파일 등으로 안전하게 관리하는 것이 좋습니다.
예제 코드
아래 코드는 사용자가 !gpt
로 시작하는 메시지를 보내면, ChatGPT의 답변을 받아서 응답하는 구조입니다.
import { Client } from 'discord.js';
import { OpenAI } from 'openai';
const client = new Client({ intents: ['Guilds', 'GuildMessages', 'MessageContent'] });
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
client.on('messageCreate', async msg => {
if (msg.author.bot) return;
if (msg.content.startsWith('!gpt ')) {
const prompt = msg.content.slice(5);
try {
const res = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: prompt }]
});
msg.reply(res.choices[0].message.content.trim());
} catch (e) {
msg.reply('OpenAI API 호출에 실패했습니다.');
}
}
});
client.login(process.env.DISCORD_TOKEN);
코드 리뷰 및 설명
- 비동기 처리: OpenAI API 호출은 시간이 걸릴 수 있으므로,
async/await
로 처리합니다. - 에러 처리: API 호출이 실패할 경우를 대비해 try-catch로 감쌌습니다.
- 환경변수: 실제 서비스에서는 토큰과 키를 코드에 직접 쓰지 않고, 환경변수로 관리해야 보안에 안전합니다.
- 명령어 구조:
!gpt
뒤에 오는 내용을 그대로 프롬프트로 사용합니다. 필요에 따라 명령어 파싱을 더 정교하게 할 수 있습니다.
확장 아이디어
- 대화 기록을 저장해 맥락을 이어가는 챗봇으로 발전시킬 수 있습니다.
- 명령어별로 다른 프롬프트나 역할을 부여할 수도 있습니다.
- OpenAI의 다양한 모델(예: 이미지 생성)도 연동 가능합니다.
마무리
OpenAI와 디스코드 봇의 연동은 생각보다 간단하지만, 실제 서비스에서는 API 사용량과 비용, 보안에 특히 신경 써야 합니다. 기본 구조를 익힌 뒤, 다양한 기능을 추가해보세요.
'봇 개발 팁 > Discord.js' 카테고리의 다른 글
디스코드 봇에서 유저 포인트 시스템 구현하기 (0) | 2025.05.22 |
---|---|
디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기 (2) | 2025.05.21 |
환경변수와 .env 파일로 토큰 안전하게 관리하기 (0) | 2025.05.18 |
단 10줄로 만드는 간단한 디스코드 봇 (1) | 2025.05.17 |
Discord.js 설치 및 사용법, 메시지 보내기와 명령어 생성 (1) | 2025.05.01 |