Skip to content

Me-in-U/DiscordBot

Repository files navigation

🤖 Discord All-in-One Bot

Discord 서버를 위한 올인원 멀티 모듈 봇입니다.
AI, 음악, 게임, 유틸리티 기능을 통합하여 서버 운영과 사용자 경험을 강화합니다.


🚀 주요 기능

🔹 기본 & 유틸리티

  • /도움 → 카테고리별 명령어 안내 (드롭다운 UI 지원)
  • /채널설정 [기능] [(선택)채널] → 길드별 기념일/도박 채널 지정 또는 해제
  • /채널설정확인 → 현재 설정된 기념일·도박 채널 확인
  • /기념일업데이트 → 오늘 이미 올라간 기념일/사건 공지를 수정하여 최신 내용으로 갱신
  • /환율 [기준통화] [대상통화] [(선택)기간] → 한국은행 ECOS 기준 최신 환율과 기본 30일 그래프 출력 (최대 365일)
  • /외환보유액 [(선택)기간] → 한국은행 ECOS 기준 최신 외환보유액과 기본 12개월 그래프 출력 (최대 60개월)
  • 이모지 확대: 커스텀 이모지 단독 입력 시 원본 크기 이미지 출력
  • 자동 태스크
    • 매일 자정: 공휴일/기념일 알림
    • 주기적 봇 상태(presence) 업데이트

🔹 예약 시스템

  • /예약 일반 [날짜] [시간] [메시지] → 특정 일시에 메시지 예약
  • /예약 반복 [주기] [설정값] [메시지] → 매시간/매일/매주/매달 반복 예약
  • /예약 리스트 → 예약 목록 확인 및 삭제 (드롭다운 메뉴 제공)

🔹 AI 기능

  • ChatGPT 연동 (gpt-5.4-mini )
    • /질문, /검색, /신이시여 → 대화 및 정보 검색
    • /대화요약, /번역, /해석, /설명 → 최근 채팅 요약/번역/심층 해석/내용 설명
  • 이미지 + 텍스트 해석 지원

🔹 음성 대화 (STT/TTS)

  • /대화 → 음성 채널에서 봇과 실시간 음성 대화 시작
    • Whisper 모델을 이용한 고성능 STT (Speech-to-Text)
    • 사용자 음성을 인식하여 텍스트로 변환 (현재 STT 기능 구현 완료)
  • /대화종료 → 대화 세션 종료

🔹 YouTube 분석

  • /요약 → 최근 유튜브 링크 10개의 제목을 보여주고 선택한 항목을 요약
  • 영상 요약 (자막 우선 → 오디오 STT → GPT 요약)
  • 댓글 요약 → 최대 40개 댓글 GPT 요약
  • 라이브 방송 알림 (YouTube WebSub + videos.list 후보 확인)

🔹 게임

  • 리그오브레전드 내전 팀 배정
    • /내전 [(선택)추가할사람] [(선택)뺄사람] → 명령어 실행자가 들어가 있는 음성방 인원으로 레드/블루팀과 탑·정글·미드·원딜·서폿을 랜덤 배정
    • 추가할사람은 쉼표, 세미콜론, 줄바꿈으로 여러 명을 입력할 수 있음
    • 음성방 인원 + 추가 인원이 10명보다 적으면 인원1, 인원2처럼 빈 자리를 채우고, 10명을 넘으면 배정하지 않음
  • 리그오브레전드 랭크 조회
    • /솔랭, /자랭, /일일랭크, /일일랭크변경
  • 도박 시스템
    • /뿌리기 [금액] [인원] → 선착순 버튼으로 랜덤 분배 뿌리기
    • /돈줘 → 매일 1회 10,000원 지급
    • /잔액 → 보유 금액 확인
    • /순위 → 길드 전체 보유 금액 랭킹 확인
    • /송금 [유저] [금액] → 다른 유저에게 송금
    • /가위바위보 [선택] [배팅금액] → 승리 시 2배, 무승부 시 절반, 패배 시 전액 잃음
    • /도박 [배팅금액] → 30%~70% 랜덤 확률, 당첨 시 2배
    • /즉석복권 → 300원으로 복권 구매 (만원 1%, 삼천원 1.7%, 천원 5.6%, 삼백원 11.7%)
    • /사다리 [배팅금액] → 3개의 사다리 중 당첨을 골라 배팅
    • /슬롯 [배팅금액] → 3개 슬롯이 일치하면 최대 50배까지 배당
    • /블랙잭 [배팅금액] → Hit/Stand/Double 지원, 블랙잭 1.5배(총 2.5배 수령)
    • ※ 도박 관련 명령은 /채널설정 도박으로 지정한 채널에서만 사용 가능
      • 슬롯별 단일 확률: 🍒 40%, 🔔 25%, 🧩 20%, ♥️ 15%
      • 3개가 모두 일치할 때 배당: 🍒×3 → 5배, 🔔×3 → 15배, 🧩×3 → 30배, ♥️×3 → 50배
      • 기대 환수율 ≈ 96.3% (하우스 엣지 ≈ 3.7%)

🔹 음악

  • /재생 [URL] → 유튜브 음악 재생
  • /일시정지, /다시재생, /스킵, /정지 등 기본 컨트롤
  • /대기열, /대기열삭제, /대기열비우기, /대기열이동, /셔플 → 대기열 관리
  • /구간이동, /반복 → 재생 위치와 반복 제어
  • 패널 UI(버튼) 제공

🔹 파티 시스템

  • /파티생성 [이름], /파티초대, /파티참가, /파티탈퇴
  • 서버 내 그룹 활동 지원

🛠️ 기술 스택

  • Python (discord.py, discord.ui, discord.ext.commands)
  • OpenAI API (gpt-5.4-mini)
  • Google API
    • YouTube Data API
  • Riot API (리그오브레전드 랭크 데이터)
  • Whisper (STT)
  • yt-dlp (YouTube 다운로드)

⚙️ 실행 방법

# 1. 환경변수 설정 (.env)
OPENAI_KEY=...
GOOGLE_API_KEY=...
CELEBRATION_UPDATE_API_KEY=...
YOUTUBE_WEBSUB_CALLBACK_URL=https://bot.ios.kr/youtube/websub
YOUTUBE_WEBSUB_VERIFY_TOKEN=...
ECOS_API_KEY=...

# 2. 패키지 설치
pip install -r requirements.txt

# 3. 실행
python bot.py

Windows에서는 _launchBot.ps1 또는 _launchBot.bat로 같은 로컬 실행 경로를 사용할 수 있습니다.

🔌 외부 API

  • POST /celebration/update

  • 헤더: Host: bot.ios.kr, X-API-Key: <CELEBRATION_UPDATE_API_KEY>

  • 본문(JSON, 선택): {"guild_id": 123456789012345678}

  • guild_id를 생략하면 기념일 채널이 설정된 모든 길드의 오늘 공지를 갱신합니다.

  • GET /youtube/websub → YouTube WebSub 구독 검증 challenge 응답

  • POST /youtube/websub → YouTube Atom 알림 수신 후 videos.list로 라이브 여부 확인

  • YOUTUBE_WEBSUB_VERIFY_TOKEN을 설정하면 callback URL query의 token 값으로 요청을 검증합니다.

About

An all-in-one Discord bot built in Python with server utilities, automation, and AI-assisted features for community management.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages