[DiscordJS 봇 개발 튜토리얼] 1. 봇 상태 메시지 설정하기
·
DiscordJS 개발 튜토리얼
지난 시간에는 Discord.js 봇 개발을 위한 기본적인 환경 설정부터 프로젝트 생성, 그리고 아주 간단한 "핑퐁" 봇을 실행하는 것까지 함께 해봤습니다. TypeScript로 프로젝트를 설정하고, 봇 토큰을 안전하게 관리하는 방법도 살짝 맛봤죠. 아직은 우리 봇이 조금 심심해 보일 수 있습니다. 그래서 이번 시간에는 지난번에 만들었던 코드를 다시 한번 살펴보고, 우리 봇에게 개성을 더해줄 수 있는 '상태 메시지'를 설정하는 방법을 알아보겠습니다.봇에게 생명을 불어넣는 '상태 메시지'디스코드에서 친구 목록이나 서버 멤버 목록을 보면, 각 사용자 이름 아래에 "온라인", "자리 비움" 같은 상태와 함께 "OOO 하는 중", "XXX 듣는 중" 같은 문구를 본 적이 있을 겁니다. 이게 바로 '상태 메시지'..
[DiscordJS 봇 개발 튜토리얼] 0. 프로젝트, 봇 생성하기
·
DiscordJS 개발 튜토리얼
디스코드 봇, 직접 만들어보고 싶다는 생각 한 번쯤 해보셨을 겁니다. Discord.js는 Node.js 기반으로 돌아가는 라이브러리인데, 이를 통해 Discord API를 직접 사용하지 않고도 디스코드 봇을 만들 수 있습니다. 앞으로 몇 개의 글에 걸쳐서 봇 개발의 A부터 Z까지는 아니더라도, 필요한 핵심 내용들을 쭉 훑어보려고 합니다. 그 첫 단계로, 오늘은 코딩을 시작하기 전에 필요한 준비물들을 챙기고 첫 프로젝트를 세팅하는 과정을 같이 해보겠습니다.Node.js 설치우선 디스코드 봇이 뛰어놀 수 있는 환경, 바로 Node.js를 설치해야 합니다. Node.js는 자바스크립트 코드를 웹 브라우저 바깥에서도 실행할 수 있게 해주는 친구라고 생각하시면 됩니다. Discord.js 자체가 Node.js ..
디스코드 봇 명령어, 길드 커맨드와 글로벌 커맨드 차이점, 사용 방법
·
봇 개발 팁/Discord.js
소개Discord.js v13부터 슬래시 커맨드(Slash Commands)가 정식으로 도입되었습니다. 슬래시 커맨드는 사용자가 채팅창에 '/'를 입력하면 나타나는 명령어들로, Discord API를 통해 등록하고 관리할 수 있습니다. 이전 Discord.js 버전에서는 메시지 기반의 명령어가 주로 사용되었지만, Message Contant Intent가 필요한다는 점과 리소스 소모가 크다는 단점 때문에 슬래시 커맨드가 더 선호되고 있습니다.Global CommandsGlobal Commands는 봇이 접근할 수 있는 모든 서버(길드)에서 사용 가능한 슬래시 커맨드입니다.봇이 초대된 모든 서버에서 사용할 수 있는 명령어로, 한 번 등록하면 모든 서버에 적용됩니다.장점한 번 등록으로 모든 서버에 적용됨이 ..
Sharding이란? 대규모 봇에서의 필수 구조 이해
·
봇 개발 팁/Discord.js
디스코드 봇이 많은 서버에 참여하게 되면, 한 프로세스에서 모든 이벤트를 처리하기 어렵습니다. 이때 필요한 구조가 바로 'Sharding'입니다. 샤딩은 봇이 여러 개의 프로세스(혹은 인스턴스)로 나뉘어 각각 일부 서버만 담당하도록 하는 방식입니다.왜 필요한가?디스코드는 공식적으로 1,000개 이상의 서버에 참여하는 봇은 반드시 샤딩을 적용하도록 권장합니다. 한 프로세스가 처리할 수 있는 서버 수에 한계가 있기 때문입니다. 샤딩을 적용하면 각 샤드가 독립적으로 이벤트를 처리해, 성능 저하나 API 제한 문제를 줄일 수 있습니다.적용 방법discord.js 등 주요 라이브러리에서는 샤딩 매니저를 제공합니다. 아래는 간단한 예시입니다.const { ShardingManager } = require('disc..
디스코드 봇에서 유저 포인트 시스템 구현하기
·
봇 개발 팁/Discord.js
유저의 활동에 따라 포인트를 부여하는 시스템은 봇의 재미와 참여도를 높여줍니다. 간단한 구조로 시작해볼 수 있습니다. 여기서는 메시지 활동에 따라 포인트를 올려주는 기본적인 예시를 다룹니다.기본 구조메시지를 보낼 때마다 포인트를 1씩 올려줍니다.데이터베이스(SQLite 등)에 유저별 포인트를 저장합니다.!포인트 명령어로 자신의 점수를 확인할 수 있게 합니다.예제 코드아래는 Prisma를 사용해 포인트를 저장하고 불러오는 함수 예시입니다. 데이터베이스 연결 및 Prisma 설정 방법은 디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기를 참고하세요.import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();..
디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기
·
봇 개발 팁/Discord.js
봇에 데이터를 저장하려면 데이터베이스가 필요합니다. 최근에는 ORM(Object Relational Mapping) 도구인 Prisma를 활용하면, SQL을 직접 다루지 않고도 손쉽게 데이터베이스를 사용할 수 있습니다. Prisma는 SQLite를 비롯해 다양한 데이터베이스를 지원하며, 타입 안전성과 코드 자동완성 등 개발 편의성이 뛰어납니다.준비 과정npm install prisma @prisma/client로 패키지를 설치합니다.npx prisma init 명령어로 Prisma 설정을 초기화하면, prisma/schema.prisma 파일이 생성됩니다.schema.prisma 파일에서 데이터베이스를 SQLite로 지정하고, 모델을 정의합니다.예시:// prisma/schema.prismagenerat..