디스코드 봇에서 유저 포인트 시스템 구현하기

2025. 5. 22. 14:15·봇 개발 팁/Discord.js

유저의 활동에 따라 포인트를 부여하는 시스템은 봇의 재미와 참여도를 높여줍니다. 간단한 구조로 시작해볼 수 있습니다. 여기서는 메시지 활동에 따라 포인트를 올려주는 기본적인 예시를 다룹니다.

기본 구조

  1. 메시지를 보낼 때마다 포인트를 1씩 올려줍니다.
  2. 데이터베이스(SQLite 등)에 유저별 포인트를 저장합니다.
  3. !포인트 명령어로 자신의 점수를 확인할 수 있게 합니다.

예제 코드

아래는 Prisma를 사용해 포인트를 저장하고 불러오는 함수 예시입니다. 데이터베이스 연결 및 Prisma 설정 방법은 디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기를 참고하세요.

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();

export async function addPoint(userId) {
  await prisma.user.upsert({
    where: { id: userId },
    update: { points: { increment: 1 } },
    create: { id: userId, points: 1 }
  });
}

export async function getPoint(userId) {
  const user = await prisma.user.findUnique({ where: { id: userId } });
  return user ? user.points : 0;
}

디스코드 봇 이벤트에서 사용하는 예시:

client.on('messageCreate', async msg => {
  if (msg.author.bot) return;
  await addPoint(msg.author.id);
  if (msg.content === '!포인트') {
    const points = await getPoint(msg.author.id);
    msg.reply(`${msg.author.username}님의 포인트: ${points}`);
  }
});

코드 리뷰 및 설명

  • addPoint 함수: 메시지를 보낼 때마다 해당 유저의 포인트를 1 증가시킵니다.
  • getPoint 함수: 유저의 현재 포인트를 데이터베이스에서 불러옵니다.
  • 봇 메시지 무시: 봇끼리 포인트를 올리지 않도록 반드시 체크해야 합니다.
  • 명령어 구조: !포인트 외에도 다양한 명령어로 확장할 수 있습니다.

확장 아이디어

  • 포인트 랭킹, 일일 미션, 보상 시스템 등 다양한 기능으로 발전시킬 수 있습니다.
  • 포인트 감소, 초기화, 관리자 명령어 등도 추가 가능합니다.
  • 데이터베이스를 MySQL, MongoDB 등으로 교체해 대규모로 확장할 수 있습니다.

마무리

포인트 시스템은 봇의 기본 기능 중 하나로, 유저들의 참여를 유도하는 데 큰 역할을 합니다. 기본 구조를 익힌 뒤, 다양한 아이디어로 발전시켜보세요.

'봇 개발 팁 > Discord.js' 카테고리의 다른 글

디스코드 봇 명령어, 길드 커맨드와 글로벌 커맨드 차이점, 사용 방법  (0) 2025.05.31
Sharding이란? 대규모 봇에서의 필수 구조 이해  (0) 2025.05.23
디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기  (2) 2025.05.21
디스코드 봇 + OpenAI 연동하기 (ChatGPT API)  (1) 2025.05.20
환경변수와 .env 파일로 토큰 안전하게 관리하기  (0) 2025.05.18
'봇 개발 팁/Discord.js' 카테고리의 다른 글
  • 디스코드 봇 명령어, 길드 커맨드와 글로벌 커맨드 차이점, 사용 방법
  • Sharding이란? 대규모 봇에서의 필수 구조 이해
  • 디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기
  • 디스코드 봇 + OpenAI 연동하기 (ChatGPT API)
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

    • 홈
    • 디스호스트 사용 가이드
    • 디스코드 봇 호스팅, 24시간 서버 구동
    • 분류 전체보기 (32) N
      • 디스코드 (6)
      • 디스호스트 가이드 (11)
      • 봇 개발 팁 (10) N
        • Discord.js (8)
        • Discord.py (1) N
      • DiscordJS 개발 튜토리얼 (5) N
  • 링크

    • 디스호스트
    • 디스호스트 패널
  • hELLO· Designed By정상우.v4.10.3
디스호스트
디스코드 봇에서 유저 포인트 시스템 구현하기
상단으로

티스토리툴바