반응형
목차
디스코드 API
디스코드의 API를 통하여 이미 구현되어있는 코드를 통하여 내가 만들 봇에 기능을 추가해주려고 한다.
포스팅과 동일한 내용은 디스코드 API 공식 홈페이지에 <https://discordpy.readthedocs.io/en/latest/index.html>
API 의 의미가 궁금한 사람들은 ⬇⬇⬇
Discord Bot API 를 이용하여 할당받은 토큰을 이용하여 로봇이 로그인을 정상적으로 처리 했는지를 hello 를 인식하면 Hello! 라고 문답 하는 기능을 구현하여 테스트 해보자.
테스트 코드는 디스코드 공식 API 사이트에서 제공해준 아래와 같다.
import discord <-- 라이브러리를 import 해준다.
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents) <-- client 인스턴스를 만들어준다.
@client.event <-- client.event 라는 데코레이터를 만들어준다.
async def on_ready(): <-- 봇이 로그인을 마쳤을 때
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message): <-- 봇이 메세지를 받았을 때
if message.author == client.user: <-- 메세지를 준 사람이 사용자인 경우 무시한다.
return
if message.content.startswith('$hello'): <-- hello 메세지가 인식되었을때
await message.channel.send('Hello!') <-- Hello! 라고 출력한다.
client.run('your token here') 얻은 토큰을 이용하여 봇을 로그인 성공함
- 라이브러리 import를 했음에도 ModuleNotFoundError 나 ImportError 가 나올 시에 라이브러리가 성공적으로 설치 되었는지 터미널에서 버전 체크를 해본다. (pip freeze 를 통해 설치된 목록을 확인할 수 있다)
- Client 인스턴스가 토큰을 이용하여 discord 에 접속하게된다.
- client.event 라는 라이브러리는 비동기적인 작업수행 방식(async)을 가지고 있으며 따라서 callback 기법을 사용하여 데이터가 다 준비 된 이후에 동작을 수행하는 방식을 갖는다.
- client event 라이브러리에 포함되어있는 기능들을 활용하여 메세지를 보낸 사람이 누구인지 어떤 메세지를 인식하고 출력할 것인지 등에 대해 작동한다.
- 모두 작동이 완료되면 얻은 토큰으로 봇이 로그인에 성공 한 것이다.
클로저와 데코레이터 / 포스팅 예정
주의 사항으로는 python 파일 이름을 저장할 시에 discord.py 라고 저장하면 안된다. 이러한 네이밍은 라이브러리와 충돌이 일어날 수 있다.
테스트
이전 포스팅에서 구축해놓은 시스템을 바탕으로 위의 테스트 코드가 제대로 작동되는지 테스트 해보자
먼저 테스트 코드의 최하단에 있는 'your token here' 에 봇을 생성할 당시에 받았던 토큰값을 집어 넣어야한다.
봇의 온라인이 확인 되었으면 위 코드에서 작성한 $hello 를 입력시에 대답을 잘 하는지 살펴보자
입력 인자로 받은 $hello에 만 답을 함을 알수 있다.
테스트도 완료가 되었으니 다음 포스팅 부터는 본격적으로 자신이 필요한 기능을 넣어보도록 한다.
'미사용 > Discord bot' 카테고리의 다른 글
디스코드 봇 만들기 :: 음악 재생 기능추가 (1) - lavalink 세팅 (0) | 2022.08.30 |
---|---|
디스코드 봇 만들기 :: 1일 1명언 기능 구현하기 (0) | 2022.08.07 |
디스코드 봇 만들기 :: 봇 생성 및 개발환경 세팅 (0) | 2022.08.03 |