Ch.2 JavaScript 라이브러리 15선
Discord.js — 디스코드 봇 만들기
핵심 내용
Discord.js는 디스코드 봇을 JavaScript로 만드는 라이브러리입니다
한 줄 요약: 디스코드 서버에서 자동 응답, 역할 부여, 알림을 수행하는 봇을 만들 수 있는 라이브러리. 실생활 비유: 카페의 '키오스크'라고 생각하세요. 손님(유저)이 버튼을 누르면(명령어 입력), 키오스크(봇)가 자동으로 주문을 접수하고 알림을 보내줍니다. 24시간 쉬지 않는 서버 매니저!
커뮤니티가 커지면 사람 손으로는 관리가 안 됩니다
수동 관리: 새 멤버마다 직접 환영 인사, 역할 부여, 규칙 안내. 100명만 넘어도 지옥. 밤에는 아무도 응답 못함.
Discord.js 봇: 입장 즉시 자동 환영 + 역할 부여. !help로 규칙 안내. 24시간 자동 응답. 서버 1000명도 거뜬.
npm 한 줄이면 설치 끝
npm init -y
npm install discord.jsconst { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
client.on('ready', () => {
console.log(`${client.user.tag} 봇이 온라인입니다!`);
});
client.on('messageCreate', (msg) => {
if (msg.content === '!hello') {
msg.reply('안녕하세요! 반갑습니다 👋');
}
});
client.login(process.env.DISCORD_TOKEN);봇 토큰 설정: Discord Developer Portal에서 봇을 생성하고 토큰을 발급받으세요. 토큰은 환경변수 `DISCORD_TOKEN`에 저장합니다. 절대 코드에 직접 토큰을 넣지 마세요! .env 파일을 사용하세요.
AI에게 이렇게 요청하세요
좋은 프롬프트 예시 "Discord.js로 커뮤니티 관리 봇을 만들어줘. !hello 입력하면 환영 메시지, !roll 입력하면 1~100 랜덤 주사위, !poll '제목' '옵션1' '옵션2'로 투표 생성, 새 멤버 입장 시 환영 알림 보내줘."
프롬프트 변형 • "!rank 명령어로 채팅 횟수 기반 레벨 시스템 추가해줘" • "특정 단어가 포함된 메시지를 자동 삭제하는 필터 기능 넣어줘" • "매일 오전 9시에 '좋은 아침!' 메시지를 보내는 스케줄러 추가해줘"
// AI가 생성해줄 핵심 코드 구조
client.on('messageCreate', (msg) => {
if (msg.author.bot) return;
if (msg.content === '!hello') {
msg.reply(`환영합니다, ${msg.author.username}님!`);
}
if (msg.content === '!roll') {
const num = Math.floor(Math.random() * 100) + 1;
msg.reply(`🎲 주사위 결과: ${num}`);
}
});커뮤니티 관리 봇 미니 프로젝트
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
});
// 환영 메시지
client.on('guildMemberAdd', (member) => {
const channel = member.guild.systemChannel;
if (channel) {
channel.send(`🎉 ${member.user.username}님이 입장했습니다! 환영해요!`);
}
});
// 명령어 처리
client.on('messageCreate', (msg) => {
if (msg.author.bot) return;
// !hello — 환영 인사
if (msg.content === '!hello') {
msg.reply(`반갑습니다, ${msg.author.username}님! 🤗`);
}
// !roll — 주사위
if (msg.content === '!roll') {
const result = Math.floor(Math.random() * 100) + 1;
msg.reply(`🎲 ${result}이(가) 나왔습니다!`);
}
// !poll — 간단 투표
if (msg.content.startsWith('!poll ')) {
const question = msg.content.slice(6);
msg.channel.send(`📊 **투표**: ${question}\n👍 찬성 | 👎 반대`)
.then(poll => {
poll.react('👍');
poll.react('👎');
});
}
});
client.login(process.env.DISCORD_TOKEN);실행 방법: Discord Developer Portal에서 봇 생성 → 토큰 복사 → `.env` 파일에 `DISCORD_TOKEN=토큰값` 저장 → `node bot.js` 실행. 서버에 봇을 초대하고 `!hello`, `!roll`, `!poll 점심 뭐 먹을까?`를 입력해보세요!
Discord.js 봇이 메시지에 반응하려면 어떤 이벤트를 리스닝해야 하는가?
핵심 용어
자동 응답
특정 메시지에 자동으로 답변하는 챗봇 기능
역할 관리
신규 멤버에게 자동으로 역할을 부여하거나 변경
알림 봇
특정 이벤트(입장, 퇴장, 예약 시간)에 알림 전송
미니 게임
주사위, 가위바위보, 퀴즈 같은 간단한 게임 구현
스터디 그룹
출석 체크, 과제 리마인더, 주간 정리 자동화
게임 서버
전적 조회, 매칭, 랭킹 봇으로 게임 커뮤니티 운영
개인 프로젝트
GitHub 푸시 알림, 서버 상태 모니터링 봇
핵심 정리
- 1Discord.js는 디스코드 봇을 JavaScript로 만드는 공식 라이브러리
- 2Client + GatewayIntentBits로 봇 생성, messageCreate 이벤트로 명령어 처리
- 3봇 토큰은 반드시 환경변수(DISCORD_TOKEN)로 관리 — 코드에 직접 넣지 말 것
- 4AI 프롬프트에 '명령어 목록 + 이벤트 종류 + 응답 형식'을 명시하면 정확한 봇 코드 생성
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작