develop
-
[뉴스검색봇] 5. Pagination, 코드 리펙토링DEVELOP/discord-bot 2022. 5. 12. 01:50
이전에 작성한 글에 이어, 이번엔 페이지네이션을 어떻게 구현했는지에 대해 작성할 것이다. 1. 첫번째 방법 페이지가 넘어갈 때마다 api쿼리의 start값을 10씩 증가시키면서 호출하자. 그러나 이 방법을 생각한지 얼마 지나지 않아, 대단히 비효율적이라는 것을 깨달았다. 왜냐하면 start값을 변경할 때마다, 즉 사용자가 버튼을 클릭할 때마다 api를 계속 호출해야하기 때문이다. 이는 내가 생각하기에도...좀...아닌거 같았다. 이렇게 만들면 사용자가 얼마 안돼도 api호출량이 기하급수적으로 늘어날 것이다. 이 방법의 장점이 있긴 있다. 버튼을 계속 클릭할 수만 있다면 만개든 10만개든 모두 읽어올 수 있다는 거..? 2. 두번째 방법 api를 키워드별로 딱 한번만 호출하되, display값을 100으로..
-
[뉴스검색봇] 4. 사용자 키워드 입력받기, Select menus, Button 만들기DEVELOP/discord-bot 2022. 5. 6. 02:06
이번에 구현한 기능들은 다음과 같다. - 사용자로부터 키워드를 입력받아서 검색결과 받아오기 - select menu 추가 - button 추가 1. 사용자로부터 키워드 받아오기 키워드 받아오는 것은 간단하다. 우선 명령어에서 키워드를 입력하는 코드를 추가한다. data: new SlashCommandBuilder() .setName("뉴스검색") .setDescription("뉴스를 검색하는 새우.") .addStringOption((option) => option.setName("키워드").setDescription("키워드를 입력하새우.").setRequired(true)), setDescription까지가 기본골격이고, 여기에 추가로 옵션을 지정할 수 있다. 옵션에 타입을 지정할 수 있는데, 문자열..
-
[뉴스검색봇] 3. 네이버 api로 데이터 불러오기, 임베드 작성DEVELOP/discord-bot 2022. 5. 3. 01:29
봇 개발을 위한 기본 골격과 명령어 테스트를 마쳤으니, 본격적으로 기능구현을 시작했다. 이번에 구현한 기능들은 다음과 같다. 1. 네이버 api호출 테스트 2. 가져온 JSON형식 데이터에서 태그, 개행문자를 제거하기 3. 디스코드에 임베드 형식으로 출력 먼저 네이버api를 사용해 뉴스데이터들을 불러오는 작업을 했다. 네이버 api를 이용하기 위해선 먼저 등록 신청을 해야한다. 간단한 정보를 입력하고 본인인증까지 마치면 바로 등록된다. 내가 사용한 검색 api는 일일 최대 호출량이 25,000회로 제한되어있다. 내가 만든 봇이 그걸 초과할 리 없으니 사실상 무한이다.ㅋㅋ 등록이 완료되면 내 애플리케이션 정보에서 클라이언트 아이디와 키를 확인할 수 있다. 봇 토큰과 마찬가지로 공개되어서는 안되니 소스코드 ..
-
[뉴스검색봇] 2. 슬래시 커맨드 작동 확인하기DEVELOP/discord-bot 2022. 5. 1. 21:37
기능구현에 앞서, 슬래시 커맨드가 잘 동작하는지 확인한다. discordjs에서는 명령어를 if/else문으로 이어붙이는 코드를 지양하라고 명시하고있다. 명령어가 길어질 수록 스파게티 코드가 되기 때문. 명령어를 수행하는 commands폴더를 따로 만들고, 그 명령어들을 불러와 사용하라고 권장한다. 소스코드 작성에 앞서, @discordjs/builders, @discordjs/rest, discord-api-types를 설치한다. > npm install @discordjs/builders @discordjs/rest discord-api-types 먼저 프로젝트 폴더 내에 commands 폴더를 만들고, 명령어 별로 js파일을 생성한다. 각각의 js 파일 내 소스코드는 다음과 같다. const { S..
-
[뉴스검색봇] 1. 개발환경 세팅DEVELOP/discord-bot 2022. 5. 1. 17:06
discord.js를 설치하기 위해 nodejs v16.6.0이상이 필요하다. 우선 nvm을 먼저 설치해준다. 설치는 scoop으로 진행했다. nvm은 nodejs의 버전 별 설치와 버전을 바꿔서 작업할 수 있게 해준다. (nvm 설치 없이 바로 nodejs만 설치해도 된다.) > scoop install nvm nvm을 설치했으면, lts버전(안정화 버전) nodejs를 설치한다. > nvm install lts 설치가 완료되면 이 버전을 사용하려면 해당 문구를 타이핑하라는 문장이 나온다. 그대로 입력 후 node -v로 버전이 맞게 세팅됐는지 확인한다. 만약 exit1 오류가 나면 명령 프롬프트를 관리자 권한으로 실행하면 된다. nodejs를 설치후, > npm init-y > npm install ..
-
디스코드 봇 개발 도전기DEVELOP/discord-bot 2022. 5. 1. 14:46
나는 디스코드를 좋아하고, 자주 사용하는 사용자로서 언젠가 꼭 디스코드 봇을 만들어 보리라 생각했다. 처음엔 디스코드에서 가장 많은 비중을 차지하고 있는 음악봇을 만들어보려고 했지만, 다음과 같은 이유로 인해 실행하지 않았다 : 대부분의 음악봇들은 유튜브에서 음악을 가져와 재생하는데, 저작권 이슈로 하나둘씩 정지되고 있다. 그리고 유명 음악봇들은 이를 해결하기 위해 요리조리... 수를 쓰고 있는듯 하다.ㅋㅋ 물론 나처럼 개인단위로 사용할 봇이 그 감시망에 걸릴 확률은 0에 수렴한다. 하지만 이런 상황에서 굳이 음악봇을 만들어야 하나? 라는 생각이 들었고, 사실 음악봇은 이미 차고 넘쳐서 경쟁력도 떨어진다. (쩌는 개발자들이 쩌는 음악봇들을 만들고 있어서.. 작고 소중한 내 봇은 비교가 많이 될 것 같았다..