디스코드 경제 봇 만들기

2026. 5. 16. 17:01·봇 개발 팁/Discord.py

코인 기능부터 붙였는데 며칠 지나지 않아 잔액만 불어나고 운영진 지급 명령까지 아무렇게나 열려 있다면, 그 경제 봇은 재미 장치가 아니라 밸런스 사고 예고편입니다.

경제 봇의 핵심은 화려한 상점이 아니라 보상을 어디서 만들고 누가 통제하느냐를 먼저 잠그는 데 있습니다.

이 글에서는 출석으로 코인을 적립하고 잔액을 확인하는 가장 작은 경제 구조를 만들면서, 왜 입문 단계에서는 적립 경로와 운영진 통제가 먼저 필요한지도 같이 봅니다.

1. 경제 봇은 재미보다 보상 회계가 먼저다

게임 커뮤니티, 길드 서버, 출석 이벤트형 커뮤니티에서 특히 자주 씁니다.

활동 자체에 작은 보상을 붙이면 재방문 이유를 만들기 쉽기 때문입니다.

다만 이 보상이 어디서 생기고 어디서 새는지 추적할 수 있어야 운영이 됩니다.

출석 기능을 먼저 만들어 두었다면 경제 구조를 얹기 훨씬 편합니다.

출석 기본형은 디스코드 출석 체크 봇 만들기에서 다뤘습니다.

2. 적립 경로를 하나만 열어 두고 시작한다

경제 봇을 처음 만들 때 상점, 송금, 도박, 아이템까지 한 번에 넣기 쉽습니다.

그렇게 시작하면 오류 포인트가 급격히 늘어납니다.

입문 단계에서는 아래 두 가지면 충분합니다.

  • 코인 적립
  • 코인 잔액 조회

적립 경로를 출석 하나로 제한해 두면 중복 지급, 명령어 악용, 밸런스 붕괴 지점을 훨씬 쉽게 추적할 수 있습니다.

3. 지급 명령은 테스트용이라도 먼저 잠가 둘 생각을 한다

이 글에는 /코인지급가 들어 있지만, 이건 어디까지나 테스트용 확인 장치입니다.

실운영에서는 운영진 역할 체크 없이 두면 가장 먼저 악용되는 지점이 됩니다.

경제 봇은 잔액 기능보다 지급 권한 통제가 먼저입니다.

4. 서버 테스트 값 먼저 넣기

DISCORD_TOKEN=여기에_봇_토큰
GUILD_ID=테스트_서버_ID


이 글에서는 슬래시 명령어 세 개로 기본 경제 구조를 만듭니다.

5. 출석 적립과 잔액 조회를 묶는 최소 코드

import os
from datetime import datetime
from collections import defaultdict

import discord
from discord import app_commands
from dotenv import load_dotenv

load_dotenv()

TOKEN = os.getenv("DISCORD_TOKEN")
GUILD_ID = int(os.getenv("GUILD_ID"))
wallets = defaultdict(lambda: {"coins": 0, "last_attendance": ""})

intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)
guild = discord.Object(id=GUILD_ID)


@client.event
async def on_ready():
    await tree.sync(guild=guild)
    print(f"로그인 성공: {client.user}")


@tree.command(name="출석보상", description="오늘 출석 보상 코인을 받습니다.", guild=guild)
async def daily_reward(interaction: discord.Interaction):
    today = datetime.now().strftime("%Y-%m-%d")
    wallet = wallets[interaction.user.id]

    if wallet["last_attendance"] == today:
        await interaction.response.send_message("오늘은 이미 출석 보상을 받았습니다.", ephemeral=True)
        return

    wallet["last_attendance"] = today
    wallet["coins"] += 100
    await interaction.response.send_message(
        f"출석 보상 지급 완료. 현재 잔액은 {wallet['coins']} 코인입니다.",
        ephemeral=True,
    )


@tree.command(name="잔액", description="현재 코인 잔액을 확인합니다.", guild=guild)
async def balance(interaction: discord.Interaction):
    wallet = wallets[interaction.user.id]
    await interaction.response.send_message(f"현재 잔액은 {wallet['coins']} 코인입니다.", ephemeral=True)


@tree.command(name="코인지급", description="테스트용으로 코인을 지급합니다.", guild=guild)
@app_commands.describe(user="코인을 받을 유저", amount="지급할 코인")
async def add_coins(interaction: discord.Interaction, user: discord.Member, amount: int):
    wallets[user.id]["coins"] += amount
    await interaction.response.send_message(f"{user.mention} 님에게 {amount} 코인을 지급했습니다.", ephemeral=True)


if not TOKEN:
    raise ValueError("DISCORD_TOKEN 값이 없습니다.")

client.run(TOKEN)


경제 봇 기본형은 결국 유저별 잔액 저장입니다.
거기에 출석 보상 같은 적립 경로를 하나 얹으면 최소 기능은 바로 완성됩니다.

6. 적립과 지급이 어떻게 갈리는지 확인

python main.py


`/출석보상`, `/잔액`, `/코인지급`을 순서대로 실행하면서 잔액이 변하는지 확인합니다.
같은 날 출석 보상이 중복 지급되지 않는지도 같이 보면 됩니다.

7. 저장 구조와 지급 통제에서 자주 막히는 부분

  • 재시작 뒤 코인이 사라지는 경우 메모리 저장 구조라 정상입니다.

    운영 단계에서는 파일 저장이나 DB를 붙여야 합니다.
  • 아무나 /코인지급를 쓰는 경우 운영진 역할 체크가 비어 있을 수 있습니다.

    테스트용 지급 명령은 편하지만 그대로 운영에 들어가면 가장 먼저 새는 구간입니다.
  • 슬래시 명령어가 늦게 보이는 경우 서버 sync와 명령어 스코프를 먼저 확인합니다.

8. 경제 구조는 참여 장치 위에 얹을 때 안정적이다

경제 봇이 혼자 있으면 숫자만 쌓이고 왜 모으는지 흐려질 수 있습니다.

출석과 레벨링 위에 얹으면 보상 흐름이 더 자연스러워집니다.

참여 구조는 디스코드 출석 체크 봇 만들기와 디스코드 레벨링 봇 만들기와 같이 보면 좋습니다.

9. 인플레이션을 못 잡을 구조는 빨리 잘라낸다

아이템 구매, 송금, 강화, 확률형 기능을 한 번에 넣으면 오류 지점이 많아집니다.

먼저 잔액과 적립 흐름이 안정적인지부터 확인해야 합니다.

특히 코인이 계속 쌓이기만 하고 소모처가 없으면 숫자만 커지고 재미는 오히려 빨리 떨어집니다.

이후 상점 기능을 붙일 계획이라면 지급량과 사용처를 같이 설계해야 하고, 아니면 작은 보상 시스템으로 선을 그어야 합니다.

10. 보상 구조는 참여 장치와 함께 굴릴 때 산다

경제 구조도 결국 하루 어느 시간에든 요청이 들어옵니다.

로컬 PC를 끄면 봇이 같이 멈춥니다.

실운영용이라면 24시간 디스코드 봇 무료 호스팅, 디스호스트처럼 계속 켜진 환경이 필요합니다.

디스코드 출석 체크 봇 만들기와 디스코드 레벨링 봇 만들기을 함께 보면 적립 리듬과 장기 활동 흔적을 한 번에 정리할 수 있습니다.

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

디스코드 투표 봇 만들기  (0) 2026.05.15
디스코드 출석 체크 봇 만들기  (0) 2026.05.14
디스코드 레벨링 봇 만들기  (0) 2026.05.13
초대 링크 추적 디스코드 봇 만들기  (0) 2026.05.09
욕설 필터 디스코드 봇 만들기  (0) 2026.05.08
'봇 개발 팁/Discord.py' 카테고리의 다른 글
  • 디스코드 투표 봇 만들기
  • 디스코드 출석 체크 봇 만들기
  • 디스코드 레벨링 봇 만들기
  • 초대 링크 추적 디스코드 봇 만들기
디스호스트
디스호스트
쉽고 안정적인 디스코드 봇 호스팅 서비스, 디스호스트의 기술 블로그입니다. 디스호스트는 24시간 구동되는 서버를 통해 디스코드 봇을 대신 구동시켜 드리는 서비스를 제공하고 있습니다.
  • 디스호스트
    디스호스트 기술 블로그
    디스호스트
  • 블로그 메뉴

    • 홈
    • 디스호스트 사용 가이드
    • 디스코드 봇 호스팅, 24시간 서버 구동
    • 분류 전체보기 (108) N
      • 디스코드 (9)
      • 디스호스트 가이드 (12)
      • 봇 개발 팁 (43) N
        • Discord.js (11)
        • Discord.py (31) N
      • DiscordJS 개발 튜토리얼 (15)
      • 디스코드 서버 운영 (18)
      • 디스코드 봇 오류 해결 (10)
  • 링크

    • 디스호스트
  • hELLO· Designed By정상우.v4.10.3
디스호스트
디스코드 경제 봇 만들기
상단으로

티스토리툴바