-
디스코드 봇 만들기 (3) - 커스텀 명령어 만들어보기IT/파이썬 응용 프로그래밍 2021. 9. 16. 11:26728x90SMALLSMALL
2편에서 로컬서버로 봇 활성화까지 시켜줬었다. 보고 싶은 사람은 아래 링크 참고하길 바란다.
https://2island.tistory.com/14
이제 봇을 온라인상태로 만들었으니, 필요한 명령어를 만들어보자.
"$안녕" 이라고 치면 "안녕하세요!" 라고 응답하는 명령어를 만들어볼 것이다.
import discord from discord.ext import commands token = 'Your Token' bot = commands.Bot(command_prefix='$') @bot.command() async def 안녕(ctx): await ctx.send('안녕하세요!') bot.run(token)
위 코드를 이해하려면 먼저 파이썬의 데코레이터 개념을 알아야한다. 데코레이터는 함수가 호출되기 전 후에 호출되는 것으로, 안녕 함수가 호출되기 전에 bot.command함수가 안녕 함수를 파라미터로 전달받아서 특정 로직을 수행한다. 함수 호출이 끝난 후에도 후처리 로직을 수행할 수 있다. 디스코드 서버에서 누군가 "$안녕" 이라는 메시지를 보내면 안녕 함수가 호출되고 그 전에 bot.command 함수가 먼저 실행이 되면서 전처리를 수행한다. 자세한 것은 discord 소스를 뜯어봐야 알 것 같다. 이는 나중에 다시 한번 포스팅 하도록 하겠다.
위 코드를 실행하면 봇이 켜지고, 디스코드 서버에 $안녕 이라고 쳤을 때, 안녕하세요!라고 응답이 오는 걸 볼 수 있다.
이제 이것을 응용해서 다양한 기능을 만들 수 있다. ping을 체크하거나, 공지사항 등 자주 물어보는 질문 들에 대해서 자동으로 답변을 받을 수 있다. 코드 몇 줄로 자동화된 봇을 구현할 수 있다는게 신기할 뿐이다.
ping 체크하는 것도 한번 만들어보자.
@bot.command() async def ping(ctx): await ctx.send(f'pong! {round(round(bot.latency, 4)*1000)}ms')
$ping이라는 명령어를 쳤을 때 현재 반응속도가 얼마나 되는지 응답으로 보내주면 된다. ping은 bot 변수에 있는 latency라는 멤버변수로 알 수 있다. 이렇게 코드를 입력해주고, 디스코드 서버에서 $ping 명령어를 보내보면 반응속도를 알 수 있다.
이렇게, bot 변수의 멤버변수들을 통해서 알 수 있는 값도 많다. 이 값들은 Discord API Reference에서 확인할 수 있다.
https://discordpy.readthedocs.io/en/stable/api.html#
여기를 참고하면 discord 오픈소스를 더 잘 활용할 수 있다. 간단하게 커스텀 명령어를 추가하는 방법을 알아보았다. 다음장에서는 디스코드 event를 활용하는 방법을 포스팅할 것이다.
728x90LIST'IT > 파이썬 응용 프로그래밍' 카테고리의 다른 글
디스코드 봇 만들기 (5) - 사용할 수 있는 이벤트 알아보기 (1) (0) 2021.09.23 디스코드 봇 만들기 (4) - 이벤트를 활용하여 인사 기능 만들어보기 (2) 2021.09.17 디스코드 봇 만들기 (2) - 로컬 서버로 봇 활성화 시키기 (0) 2021.09.15 디스코드 봇 만들기 (1) - 봇 서버에 추가 (0) 2021.09.14 python flask로 간편하게 REST API 서버 만들기 - (2) 간단한 REST API 구현해보기 (0) 2021.09.04