How to Set Up and Test Discord Bot Webhooks with Flask and P
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

디스코드 봇 웹후크 설정 및 테스트 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

앱 개발

대상자

  • 개발자
  • 실시간 메시지 전송, 로컬 테스트, 봇 인터그레이션 구현에 관심 있는 중급 이상 개발자
  • 난이도: 중간 (Python, Flask, Discord API 기본 지식 필요)

핵심 요약

  • Discord 웹후크실시간 알림봇 인터그레이션을 위한 공개 URL 기반의 비동기 메시지 전송 방식
  • Flask 서버와 Pinggy를 활용해 로컬 개발 환경에서 공개 URL을 생성 가능
  • 보안 처리를 위해 Discord 서명 검증(nacl.signing.VerifyKey)이 필수적

섹션별 세부 요약

1. 디스코드 서버 및 채널 생성

  • 채널 ID 생성을 위해 개발자 모드 활성화채널 ID 복사 필요
  • Discord Developer Portal에서 Bot Token 발급 및 OAuth2 URL 생성 (권한: Manage Webhooks)

2. 웹후크 생성 및 설정

  • curl 명령어로 웹후크 생성 (필요한 파라미터: BOT_TOKEN, CHANNEL_ID)
  • 생성된 idtoken을 사용해 웹후크 URL 구성 (https://discord.com/api/webhooks/{id}/{token})

3. Flask 서버 구현

  • discord_webhook.py 파일 생성 및 Flask 앱 구성
  • /send 엔드포인트: 메시지 전송 (requests.post)
  • /health 엔드포인트: 서버 상태 확인
  • 필수 의존성: flask, requests

4. 로컬 서버 공개 및 테스트

  • Pinggy를 통해 로컬 서버에 공개 URL 할당 (ssh -p 443 -R0:localhost:8000 a.pinggy.io)
  • curl 또는 Postman으로 메시지 전송 테스트 (curl -X POST "http:///send" -d '{"content": "Hello"}')

5. 인터랙션 및 보안 처리

  • Slash 명령어 처리 엔드포인트 (/discord-interactions) 구현
  • type 1 (PING) → type 1 (PONG) 응답
  • type 2 (명령어) → 사용자 입력 처리
  • Discord 서명 검증
  • X-Signature-Ed25519, X-Signature-Timestamp 헤더 사용
  • nacl.signing.VerifyKey를 통해 서명 검증 수행

결론

  • Pinggy를 활용해 로컬 테스트를 통해 공개 URL 생성 가능
  • 보안 처리서명 검증(nacl.signing.VerifyKey)을 필수적으로 적용해야 함
  • Flask + Discord API를 결합한 봇 인터그레이션실시간 알림 및 사용자 상호작용 구현에 적합함