BRICKSTUDY

[BricksAssistant] 디스코드 AI 챗봇 구축기 - (2) 디스코드 연동하기 본문

프로젝트

[BricksAssistant] 디스코드 AI 챗봇 구축기 - (2) 디스코드 연동하기

brickstudy 2024. 8. 3. 11:43

📌 Intro

안녕하세요!! Brickstudy 김민준입니다.

 

디스코드에 AI 챗봇 연동을 위한 첫번째 단계로 디스코드 챗봇을 구성합니다.

현재 게시글은 2024년 8월 기준 디스코드 챗봇을 만들기위해 필요한 설정 과정을 정리합니다. 디스코드 웹 UI변경에 따라 일부 설정 방법이 변경될 수도 잇습니다.

 

참고!! 디스코드 회원가입 + 채널 생성하는 과정은 생략 후 바로 챗봇 설정하는 단계로 진행합니다.

 

 

🗂️ Table of Contents

1. 디스코드 사용자 설정에서 개발자 모드 설정

2. 디스코드 개발자 사이트 접속

3. Bot 설정

4. OAuth2 설정

5. Discord 채널에서 봇 연동

6. Discord 챗봇 기능 개발

 

💡 Background

이전 블로그 글

[BricksAssistant] 디스코드 AI 챗봇 구축기 - (1) 기획 [링크]

 

 

1. 디스코드 사용자 설정에서 개발자 모드 설정

A. 디스코드 화면 왼쪽 하단의 톱니바퀴 모양 사용자 설정 클릭


B. 고급 > 개발자 모드 > 활성화

 

 

2. 디스코드 개발자 사이트 접속

A. 링크 접속 > "New Application" 클릭

 

Discord Developer Portal — API Docs for Bots and Developers

Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.

discord.com

 

B. application 이름 입력 > "Create" 클릭

 

 

 

3. Bot 설정

A. 왼쪽 메뉴바에서 "Bot" 클릭

  • USERNAME : 디스코드 봇상에 보여질 이름
  • Authorization Flow
    • Public BOT : bots을 누구나 사용하게 할 수 있을지 체크
      • 보안 때문에 Privte으로 체크 안하고 싶지만, "비공개 애플리케이션은 기본 인증 링크를 포함할 수 없어요"라는 경고가 뜨면서 Bot의 변경사항 저장 불가(일단 Public으로 진행하고 추후 방법 찾을 시 글 업데이트 할 예정!!)
  • Privileged Gateway Intents : 게이트웨이 권한 관련된 부분
    • 모두 다 체크해야만 정상 진행 가능

 

  • Bot Permissions
    • 챗봇의 사용 용도에 맞춰서 권한 부여
    • 현재 예시에서 사용자 응답을 기준으로 기본 메시지와 쓰레드 형식 메시지를 전달할 예정으로 아래와 같이 권한 부여

 

4. OAuth2 설정

A. 왼쪽 메뉴에서 OAuth2 클릭

  • 디스코드 챗봇을 연동하기 위한 URL 설정
  • OAuth2 URL Generator
    • scopes : bot 클릭
    • Bot Permissions : Bot 설정과 동일하게 클릭

 

B. GENERATED URL > Copy 클릭 

 

 

5. Discord 채널에서 봇 연동

A. 이전에 복사한 링크 디스코드 채널에 붙여넣기

  • 디스코드 챗봇을 연동하기 위한 URL 설정

 

B. 링크 클릭 후 확인

  • 해당 대화방에서 챗봇이 참가되었을 경우 연동 완료

 

 

 

6. Discord 챗봇 기능 개발

A. 디스코드 개발자 사이트 이동 > 왼쪽 Bot 메뉴 클릭 > Token 생성

  • 해당 토큰을 활용해 Discord 챗봇의 기능 개발이 가능합니다.

 

B. 파이썬 코드 작성

  • 디스코드 라이브러리 설치
# 디스코드 설치
pip install discord.py

# 환경변수 설정을 위해 설치
pip install python-dotenv

 

  • .env 파일 작성
DISCORD_TOKEN="{복사한 토큰 입력}"

 

 

from dotenv import load_dotenv

import os
import discord
from discord.ext import commands


load_dotenv()

DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)


@bot.command()
async def ping(ctx):
    await ctx.send("Pong!")
    

if __name__ == "__main__":
	bot.run(DISCORD_TOKEN)

 

B. 코드 실행 후 동작 확인

  • `python app.py` 실행 후 아래와 같이 정상적으로 sessin ID가 보이면 됩니다.

 

  • 오른쪽에 챗봇이 온라인되어있고 "!ping" 채팅을 했을 때, 응답이오면 연동이 완료되었습니다.