Discord.py VS Discord.js 어느게 더 좋을까?

디스코드 봇을 제작할 때, 가장 많이 사용되는 라이브러리를 두개 꼽으라면 보통 Discord.py 혹은 Discord.js를 많이 꼽는다. 디스코드 봇 제작에 앞서 라이브러리 선택에 갈등을 격는 개발자를 위해 미약하나마 도움이 되고자, 두 라이브러리를 모두 사용해보고 개인적인 감상을 정리해 보았다.

일단, 프로그래밍 경험이 거의 없거나 전무한 사람이라면 Python을 사용하는 Discord.py 사용을 권장한다. Discord.js는 JavaScript 언어의 난해함과, Node.js의 예외 처리 등 고려해야할 사항이 많아서 초보자가 섣부르게 사용하기에는 문제가 많다. 특히 Node.js의 예외 처리는 상당히 고역인 작업인데, 제대로 된 예외처리가 되지 않으면 실행중인 디스코드 봇이 죽는 사태가 발생할 수 있다.

공식 문서를 중요시 하는 개발자라면, Discord.js를 추천한다. Discord.py의 공식문서는 대단히 빈약해서 기초적인 수준을 제외하면 도무지 써먹기 어렵다. 꼭 Python을 이용한 봇 개발을 해야겠다면 차라리 Pycord를 사용하는게 좋다. 이쪽은 Discord.py의 포크 버전인데, 버전 2 부터 완전히 다른 노선을 타고 있으며 공식문서도 훨씬 잘 되어 있다.

고성능/대규모/복잡한 기능의 봇을 만들어야 한다면 Discord.js를 추천한다. 기본적으로 이벤트 기반의 비동기 처리가 가능한 Node.js를 사용하기 때문에 Discord.js가 좀 더 성능면에서 유리하다. 또한 Discord.js는 Discord API 100% 커버리지를 보장하기 때문에, Discord에서 제공하는 기능을 '모두' 이용할 수 있다. 따라서 복잡한 기능을 구현해야 한다면 Discord.js가 좋은 선택이다.

접두 명령어(!ping)를 쓰려고 한다면 본인이 사용하는 언어에 따라 Discord.py 혹은 Discord.js를 추천하고, 슬래시 명령어(/ping)를 쓰려고 한다면 Discord.js를 추천한다. 만약 나는 슬래시 명령어를 쓰고 싶은데 JavaScript는 절대 못쓰겠다 싶으면 대안으로 Pycord를 추천한다. 슬래시 명령어로 Discord.py를 추천하지 않는 이유가 있는데, 일단 공식 문서에 제대로 된 예제가 거의 없다. 이 부분에 대해서는 후발 주자인 Pycord에게도 한참 밀리는 상황이다.

다만 위의 내용은 어디까지나 Discord.pyDiscord.js의 비교를 위해서 적은 비교 내용일 뿐, 디스코드 봇을 만들기 위한 라이브러리는 다양한 언어에서 지원하고 있다. 따라서 내가 사용하기에 익숙한 언어 및 만들어야 하는 봇의 규모나 기능에 따라 적절한 라이브러리를 선택하는 게 가장 좋은 선택임을 명심해야 한다.

Discord.py Disocrd.js
언어 Python JavaScript
난이도 쉬움 어려움
성능 보통 좋음
공식문서 빈약 훌륭함
Discord API 커버리지 불명 100% 지원