디스코드 봇 만들기 #29화폐·상점(Economy) 시스템 만들기! 코인 벌어서 아이템 사기 (파이썬 예제)
이번 #29편에서는 디스코드 봇에 화폐·상점(Economy) 시스템을 만들어 볼게요. 출석 체크로 코인을 벌고, /상점에서 드롭다운으로 아이템을 고르고, /지갑으로 내 인벤토리를 확인하는 것까지 한 번에 완성해요.
최신순
이번 #29편에서는 디스코드 봇에 화폐·상점(Economy) 시스템을 만들어 볼게요. 출석 체크로 코인을 벌고, /상점에서 드롭다운으로 아이템을 고르고, /지갑으로 내 인벤토리를 확인하는 것까지 한 번에 완성해요.
지난 편에서는 화폐·상점(Economy) 시스템을 만들어서 코인을 벌고 아이템을 사는 봇을 완성했어요. 서버에 "놀거리"가 하나 생긴 셈이죠! 이번 편에서는 서버 운영에 진짜 자주 쓰이는 기능, 투표·설문(Poll) 봇을 만들어볼게요. 두 가지 방식을 다 다룹니다.
지난번 파이썬 VPS 배포 입문 - 디스코드 봇·자동화 스크립트 24시간 돌리기 (Ubuntu + systemd) 글에서 VPS에 봇을 올려서 24시간 돌리는 법을 다뤘어요. 그런데 막상 서버를 하나 빌리고 나면 이런 생각이 들죠.
지난 #26편에서는 버튼 하나로 1:1 상담 채널이 자동으로 생기는 티켓 시스템을 만들었어요. 그런데 이걸 실제 서버에 붙여보면 하루 만에 문제가 하나 튀어나옵니다.
지난 #25편에서는 봇이 죽지 않게 에러 핸들링과 로깅 체계를 잡아봤어요. 이제 봇이 웬만해선 안 죽으니까, 이번엔 사람 손이 필요한 일을 봇이 대신 받아주게 만들어 볼게요.
지난 #24편에서는 채널 난독화(Channel Obfuscation)에 대응하는 법을 봤어요. 봇이 볼 수 없는 채널이 생겨도 안 터지게 만드는 작업이었죠.
첫 편을 올린 게 2025년 4월이었는데, 디스코드 봇 만들기 시리즈가 어느새 24편이 됐어요. 그러다 보니 이런 메시지를 종종 받습니다. 그래서 오늘은 새 기능을 만드는 대신 지도 한 장을 그려드릴게요. 이 글 하나만 즐겨찾기 해두면 필요한 편으로 바로 점프할 수 있어요…
지난 #23편에서는 JSON을 버리고 aiosqlite로 봇의 데이터 계층을 제대로 다시 깔았죠. 오늘은 조금 결이 다른 글이에요. 새 기능을 만드는 게 아니라, 곧 우리 봇이 고장 날 수도 있는 변경을 미리 막는 글입니다 🛡️
지난 Claude Code 입문 - 설치부터 첫 실행까지 글에서 터미널에 Claude Code를 깔고 첫 명령을 내려봤죠. 그때 이런 화면 기억나시나요? 파일 하나 고칠 때마다 "이거 해도 될까요?" 하고 물어보던 승인 프롬프트요.
봇 만드는 글을 스물세 편이나 쓰는 동안, 댓글이랑 검색 유입으로 제일 많이 들어온 질문이 이거예요. "내 컴퓨터 끄면 봇도 죽는데, 이거 어떻게 24시간 켜두나요?"
지난 #22편에서는 /금지어추가, /금지어삭제 를 자동완성으로 만들었죠. 편해지긴 했는데, 그 데이터가 지금 어디에 있죠? data/bannedwords.json 이에요. #21의 경고 기록도 data/warns.json 이고요.
지난 #21편에서는 채팅을 지켜보는 cogs/automod.py를 만들었죠. 그런데 문제가 하나 있었어요. 금지어가 코드 안에 박혀 있었다는 것 😩
지난 #20편에서는 새 멤버가 들어오면 환영 카드를 띄우고, 규칙 동의 버튼으로 자동 역할 부여까지 되게 만들었죠. 사람 손 없이 신규 유저를 받는 문이 생긴 거예요 🚪
지난 #19편에서는 길어진 bot.py를 확장(Extension)과 Cog 구조로 쪼개고, !reload로 재시작 없이 코드를 다시 불러오는 것까지 만들었죠. 오늘부터가 진짜 재미있는 부분이에요. 그 구조 위에 기능 파일을 하나씩 얹어갑니다 🏗️
지난 #18편에서는 discord.Poll 로 네이티브 투표 기능을 만들었죠. 그런데 여기까지 오면서 눈치채신 분 계실 거예요. bot.py 파일이 슬슬... 아니 꽤 많이 길어졌잖아요? 😅 명령어 하나 고치려고 스크롤을 300줄씩 내리고 계신다면, 오늘 글이 딱입니다.
요즘 개발자 커뮤니티에서 제일 많이 보이는 이름이 바로 Cursor(커서) 예요. "AI가 코드를 대신 짜준다"는 말은 많이 들었는데, 막상 깔아보면 창은 VS Code랑 똑같이 생겨서 "그래서 뭐부터 눌러야 해?" 하고 멈추게 되죠.
지난 파이썬 업무 자동화 #3 - 파일 정리 자동화에서는 폴더 속 파일 이름을 파이썬으로 한 번에 정리해봤어요. 이번 편에서는 한 발 더 나아가서, 자동화 스크립트가 일을 다 끝내면 내 디스코드로 알림을 보내주는 방법을 배워볼게요!
파이썬 공부나 디스코드 봇 개발을 시작하면 대부분 VS Code(Visual Studio Code)를 쓰게 되는데요. 기본 상태로도 좋은 에디터지만, 확장 프로그램(Extension)을 몇 개 깔아두면 개발 경험이 꽤 달라집니다. 오류가 코드 옆에 바로 보이고, 들여쓰기가…
지난 #7편에서는 모달(Modal)로 사용자에게 입력을 받아봤어요. 이번 #8편에서는 봇이 보내는 메시지를 훨씬 예쁘게 만들어주는 임베드(Embed)를 다뤄볼게요!
디스코드 봇에서 슬래시 명령어를 사용하려면 discord.appcommands를 활용하면 됩니다. intents = discord.Intents.default() bot = commands.Bot(commandprefix="/", intents=intents)
여러분은 환경변수를 설정해야 할 때 어떻게 하시나요? 내 pc 우클릭 속성 고급 시스템 설정 이렇게 들어가시나요? 이제는 sysdm.cpl 이것만 기억하세요