디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기

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

봇에 데이터를 저장하려면 데이터베이스가 필요합니다. 최근에는 ORM(Object Relational Mapping) 도구인 Prisma를 활용하면, SQL을 직접 다루지 않고도 손쉽게 데이터베이스를 사용할 수 있습니다. Prisma는 SQLite를 비롯해 다양한 데이터베이스를 지원하며, 타입 안전성과 코드 자동완성 등 개발 편의성이 뛰어납니다.

준비 과정

  1. npm install prisma @prisma/client로 패키지를 설치합니다.
  2. npx prisma init 명령어로 Prisma 설정을 초기화하면, prisma/schema.prisma 파일이 생성됩니다.
  3. schema.prisma 파일에서 데이터베이스를 SQLite로 지정하고, 모델을 정의합니다.

예시:

// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}
datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}
model User {
  id     String @id
  points Int    @default(0)
}
  1. npx prisma migrate dev --name init 명령어로 데이터베이스와 테이블을 생성합니다.

예제 코드

아래는 Prisma Client를 사용해 유저별 포인트를 저장하고 불러오는 예시입니다.

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

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

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

코드 리뷰 및 설명

  • PrismaClient: Prisma가 자동 생성한 타입 안전한 DB 클라이언트입니다.
  • upsert: 해당 유저가 없으면 새로 만들고, 있으면 포인트를 1 증가시킵니다.
  • findUnique: 유저의 포인트를 조회합니다. 없으면 0을 반환합니다.
  • Prisma는 비동기 함수이므로, 실제 봇 코드에서는 await 또는 .then()을 사용해야 합니다.

실전 팁

  • Prisma는 타입스크립트와 궁합이 좋지만, 자바스크립트에서도 문제없이 사용할 수 있습니다.
  • 데이터베이스 파일(dev.db)은 프로젝트 폴더 내에 생성됩니다. 백업이 필요하다면 주기적으로 복사해두세요.
  • Prisma 스키마를 수정한 후에는 반드시 마이그레이션을 다시 실행해야 합니다.
  • 대규모 봇이나 동시 접근이 많을 경우, SQLite 대신 MySQL, PostgreSQL 등으로 datasource를 변경할 수 있습니다.

마무리

Prisma를 활용하면 SQL 쿼리를 직접 작성하지 않아도, 안전하고 편리하게 데이터베이스를 다룰 수 있습니다. 기본 구조를 익힌 뒤, 더 복잡한 모델과 관계로 확장해보세요.

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

Sharding이란? 대규모 봇에서의 필수 구조 이해  (0) 2025.05.23
디스코드 봇에서 유저 포인트 시스템 구현하기  (0) 2025.05.22
디스코드 봇 + OpenAI 연동하기 (ChatGPT API)  (1) 2025.05.20
환경변수와 .env 파일로 토큰 안전하게 관리하기  (0) 2025.05.18
단 10줄로 만드는 간단한 디스코드 봇  (1) 2025.05.17
'봇 개발 팁/Discord.js' 카테고리의 다른 글
  • Sharding이란? 대규모 봇에서의 필수 구조 이해
  • 디스코드 봇에서 유저 포인트 시스템 구현하기
  • 디스코드 봇 + OpenAI 연동하기 (ChatGPT API)
  • 환경변수와 .env 파일로 토큰 안전하게 관리하기
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

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

    • 디스호스트
    • 디스호스트 패널
  • hELLO· Designed By정상우.v4.10.3
디스호스트
디스코드 봇에 SQLite 연동하기 - Prisma로 쉽게 시작하기
상단으로

티스토리툴바