개발 강좌/기타 강좌

디스코드봇(Components) - 01ㅣComponents에 대하여 알아보자.

건유1019 2021. 5. 29. 03:18

안녕하세요. 이번 강의에서는 디스코드 봇(Components)에 대하여 알아보도록 할 것입니다.

Components에 대한 강의는 총 3편으로 구성될 예정이며, 이번 편에서는 Components에 대한 개념을 알려드릴 껍니다.

 

여러분들은 동적(반응형) 디스코드 보라고 들어보신 적 있나요?

동적(반응형) 디스코드 보란 사용자와 디스코드 봇을 서로 상호작용하는 것을 의미합니다.

예를 들어 사용자는 특정 명령어를 요구한다면, 봇은 그것에 대한 정보를 반환합니다. 사용자는 그 정보를 기반으로 다시 특정 명령어를 요구하게 되고, 봇은 또 새롭게 들어온 특정 요구에 대하여 정보를 반환하는 것이라고 보면 됩니다.

Components는 "동적(반응형) 디스코드 봇"을 만들기 위해선 필수 요소라고 생각합니다. 기존에는 "반응(Reaction)"을 기반으로 꼼수를 사용하였다면, "컴포넌트(Components)"는 공식적으로 디스코드가 만들어 준 서로 간 상호작용하는 길이라고 봅니다.

 


처음 들어보는데, Components가 뭐예요?

Components는 슬래시 커맨드(빗금 명령어)의 기능 중 하나로, 2021년 5월 28일에 정식 추가된 기능입니다.

위 GIF와 같이, 메시지 아래에 버튼을 만들어 주어서, 봇과 사용자 간 서로 상호작용을 수월하게 해 주기 위하여 만들어진 기능입니다. 버튼뿐만 아닌, 드롭다운 등의 더욱 다양한 Components가 추가될 것이라고 합니다.

 

Components에 대한 여러 예시를 설명해보도록 하겠습니다.

위 사진을 비교해봅시다. 우리는 가위바위보라는 명령어를 만들었다고 가정하였을 때, 왼쪽은 직접 입력하는 방식이고 오른쪽은 버튼 하나로 해결됩니다. 이런 면에서는 사용자가 직접 작성하는 것보다는 버튼을 누르는 것이 효과적이며, 이런 점에서 유용하다고 봅니다.

다음의 예시는 디스코드 봇을 활용한 계산기입니다. 디스코드 봇 계산기의 경우 유저가 직접 입력할 수도 있으나, Code Injection 등의 보안 위협이 따르며, 보안면에서는 유저가 직접 입력하게 하는 것보다는 특정 값을 입력할 수 있도록 제한을 두어야만 합니다. 계산기의 경우도 우리는 특정 값만 요구하는 "화이트 리스트" 개념을 충족합니다. 만약에 Components를 사용하신 다면 이런 것도 만들어 볼 수 있다고 보겠습니다.


우리는 discord.py를 응용하여, "직접" 버튼을 만들어 보고자 합니다. 아직 discord.py에서도 해당 기능은 정식적으로 지원하지 않으나, discord.py를 통하여 Discord API와 통신하여 Components를 구현해볼 것입니다.  

 

본 강의는 Discord Bot의 기초를 모를 경우, 많은 어려움이 따를 수 있습니다. 만약 디스코드 봇에 대하여 기초 지식이 부족할 경우, 디스코드 강의를 먼저 보시고 오시기 바랍니다.

 

이상 1편을 마치도록 하겠습니다. 2편에서는 위에 있는 사진 처럼 버튼을 불러오고 리턴된 값을 불러오는 방법까지 세세히 다루도록 하겠습니다!