디스코드 봇 만들기 #29화폐·상점(Economy) 시스템 만들기! 코인 벌어서 아이템 사기 (파이썬 예제)
이번 #29편에서는 디스코드 봇에 화폐·상점(Economy) 시스템을 만들어 볼게요. 출석 체크로 코인을 벌고, /상점에서 드롭다운으로 아이템을 고르고, /지갑으로 내 인벤토리를 확인하는 것까지 한 번에 완성해요.
최신순
이번 #29편에서는 디스코드 봇에 화폐·상점(Economy) 시스템을 만들어 볼게요. 출석 체크로 코인을 벌고, /상점에서 드롭다운으로 아이템을 고르고, /지갑으로 내 인벤토리를 확인하는 것까지 한 번에 완성해요.
지난 편에서는 엑셀 데이터를 구글 시트에 자동으로 올리는 방법(gspread)을 다뤘어요. 데이터를 모으고, 저장하고, 공유하는 것까지는 이제 파이썬이 다 해주죠.
지난 편에서는 화폐·상점(Economy) 시스템을 만들어서 코인을 벌고 아이템을 사는 봇을 완성했어요. 서버에 "놀거리"가 하나 생긴 셈이죠! 이번 편에서는 서버 운영에 진짜 자주 쓰이는 기능, 투표·설문(Poll) 봇을 만들어볼게요. 두 가지 방식을 다 다룹니다.
지난 #26편에서는 버튼 하나로 1:1 상담 채널이 자동으로 생기는 티켓 시스템을 만들었어요. 그런데 이걸 실제 서버에 붙여보면 하루 만에 문제가 하나 튀어나옵니다.
지난 #25편에서는 봇이 죽지 않게 에러 핸들링과 로깅 체계를 잡아봤어요. 이제 봇이 웬만해선 안 죽으니까, 이번엔 사람 손이 필요한 일을 봇이 대신 받아주게 만들어 볼게요.
지난 파이썬 업무 자동화 #2 - 웹 크롤링 입문 (requests + BeautifulSoup)에서는 웹 페이지를 통째로 가져와서 원하는 부분만 뽑아 CSV로 저장하는 것까지 해봤죠. 그 글을 보고 이런 댓글이 제일 많이 왔어요.
지난 #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줄씩 내리고 계신다면, 오늘 글이 딱입니다.
지난 #16편에서는 봇이 정해진 시간에 먼저 말을 거는 리마인더·알림 기능을 만들어봤어요. 오늘은 한 단계 더 나아가서, 우리 서버 문서를 읽고 대답하는 봇을 만들어볼게요. 이런 걸 RAG(검색 증강 생성, Retrieval-Augmented Generation) 라고 불러요!
벌써 7월의 마지막 날이에요! 이번 달에 Claude Sonnet 5 출시 소식부터 Claude Code 입문, Cursor 사용법, Claude Opus 5 출시까지 AI 코딩 도구 소식을 정말 많이 다뤘는데요. 그러다 보니 이런 질문이 자연스럽게 나옵니다.
예를 들어… 이런 식으로 하나의 명령어 그룹 안에 여러 개의 기능을 넣는 거죠! class UserCommandGroup(appcommands.Group): def init(self): super().init(name="user", description="유저 관련 명령어…