1. discord 서버 생성하기
우선 discord bot이 일을 하기 위한 서버환경을 만들어 줘야 합니다. 하나 생성해볼까요?
discord를 실행하고 좌측의 + 버튼을 눌러서 서버를 생성합니다.
서버의 이름을 지정하고 서버 이미지도 간단하게 넣어줍니다.
이후 만들기 버튼을 누르면 왼쪽 서버목록에 추가된 것을 볼 수 있습니다.
초대한 사람만 사용할 수 있도록 채널권한을 비공개로 변경해 줍니다.
2. Bot 생성하기
다음 url로 접속해서 application을 생성합니다.
https://discord.com/developers/applications
오른쪽 상단의 New Application 버튼을 클릭합니다.
정상적으로 생성되면 다음과 같은 화면이 표시됩니다.
이제 왼쪽의 Bot을 선택합니다.
개인용으로 제한하여 사용할 것이기 때문에 PUBLIC BOT은 off하고 나머지는 열어주었습니다. 이부분의 상세한 역할은 추가적으로 좀 알아봐야 할 것 같습니다.
3. Bot을 서버에 연결하기
왼쪽에서 OAuth2를 선택하면 URL Generator가 표시됩니다.
scope에서 bot을 설정합니다.
이러면 아래쪽에 BOT 에서 사용가능한 퍼미션 목록이 나열됩니다.
목록에서 Send Messages 를 선택합니다. 그런데 봇을 서버에 초대하기 위해서는 Administrator 권한을 줘야 하는듯 합니다. 퍼미션은 조금더 공부를 해봐야할듯 하네요.
사용할 기능들을 선택하면 url이 자동 생성되고 이 url을 이용하여 연결을 합니다.
URL 생성기는 앱에 대해 선택한 범위와 권한을 기반으로 설치 링크를 생성합니다. 링크를 사용하여 자신의 서버에 앱을 설치하거나 다른 사람이 설치할 수 있도록 공유할 수 있습니다.
여기서 생성된 url 을 복사합니다. 이 값은 discord app에서 사용할 것입니다.
브라우저 주소창에 URL을 붙여놓고 실행합니다.
이후 연결할 서버를 선택하고 계속하기를 누릅니다.
이제 승인을 누르면 생성한 bot과 서버가 연결완료 됩니다.
추가된 아이디를 눌러보면 정보가 표시됩니다. 아이콘을 보니 오프라인으로 표시되어 있네요.
이제 개발을 시작할 준비가 되었습니다.
4. bot 토큰 생성 및 복사하기
아까 개발자 사이트로 돌아가서 Bot의 토큰을 생성해 줍니다.
bot 메뉴에서 Reset Token 버튼을 누르면 이 봇에 대한 Token이 생성되며 식별자로 사용됩니다.
"보안을 위해 토큰은 생성 시 한 번만 볼 수 있습니다. 토큰을 잊어버리거나 액세스 권한을 잃어버린 경우 새 토큰을 다시 생성하세요."
라는 문구가 보이네요. 한번만 보여주고 사라지니 잘 저장해놓고 까먹으면 새로 생성해야 합니다.
5. 개발 코드와 bot 연동 간단 테스트 하기
discord는 개발에 많은 언어를 지원하고 있습니다만 여기서는 파이썬을 사용하도록 하겠습니다.
https://github.com/Rapptz/discord.py
저는 rocky linux 상에서 python 3.9를 사용하고 vscode로 구현하였습니다.
- 패키지 설치
먼저 discord python 패키지를 설치합니다.
pip3 install discord
- 키값 숨기기
openai key나 discord bot의 토큰이 노출되지 않도록 주의 하세요.
다른 파일에 기록하고 load해서 사용하도록 구현해서 숨겨놓는게 중요하겠죠?
환경변수를 사용하던 json으로 만들던 편한 방식을 사용하세요.
저는 토큰값 노출을 막기 위해 리눅스 .bashrc 파일에 정의하고 os.environ.get() 을 이용하여 가져오는 방식으로 사용하였습니다.
.bashrc 파일 예>
export OPENAI_API_KEY='OPENAI API 키 값'
export DISCORD_BOT_TOKEN='디스코드 봇 TOKEN 값'
다음 기본 코드는 bot이 로그인되면 정보를 표시하고
메시지가 수신되었을 때 내용을 표시해주는 코드입니다.
discord.py는 이벤트 개념을 중심으로 작동합니다. 어떤 메시지가 발생하면 그에 대한 이벤트를 수신하여 응답할 수 있습니다.
다음 코드를 수행하면 console로 다음과 같은 메시지가 표시됩니다.
이때 discord에서 생성한 서버에 rot 상태가 온라인으로 변경되면 문제 없는 것입니다.
2024-06-18 14:08:30 INFO discord.client logging in using static token
2024-06-18 14:08:32 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: xx).
discord에서 생성한 봇에게 DM을 날려보니 콘솔에 잘 표시가 됩니다.
6. chatGPT API를 이용해서 챗봇 만들어보기
이제 진짜 목적인 챗봇을 만들어 보겠습니다.
먼저 openAI API 사용을 위한 KEY를 발급 받으셔야 합니다.
OpenAI 계정 생성 후 Key 발급은 아래에서 하시면 됩니다.
https://platform.openai.com/api-keys
openai key도 동일하게 .bashrc 파일에 넣고 읽어오는 방식으로 하였습니다.
아래 코드는 이전 대화를 기억하면서 계속 채팅을 이어갈 수 있도록 구현 하였습니다.
chatGPT의 응답을 assistant role로 계속 누적해서 넣어주는 것이죠
자 이제 시험해보겠습니다.
이전 메시지를 기억하는지도 보겠습니다.
잘 만들어진것 같네요~
몇줄 안되는 코드로 훌륭한 chatGPT discord bot이 생겼습니다~~~
'IT > 개발' 카테고리의 다른 글
google Gemma 2 개요 및 간단 테스트 (0) | 2024.07.01 |
---|---|
ChatGPT API로 구현할때 토큰 수 제한 문제 해결하기(문자열 token 수 세기, tiktoken) (0) | 2024.06.19 |
pytorch openpose를 사용해보자(초간단, yolov9 연동 결과) (1) | 2024.06.14 |
paddle OCR을 이용해서 문자 인식 해보기(easy OCR과 결과 비교) (0) | 2024.06.10 |
객체 탐지 모델 YOLO의 버전별 라이센스 비교 (MIT, Apache 2.0, GPL-3.0, AGPL-3.0 차이, license) (0) | 2024.05.22 |