-
무엇을 먼저 알아야할까?프로젝트/Kick-off-bot 2021. 12. 19. 19:44
어떤 것이든 실행하기 전에 준비가 필요하다. 가끔 지하철에서 심심할 때 보는 마인크래프트 유튜버는 자신이 건축을 하기 위해서 준비의 준비의 준비의 준비까지 한다. 그 정도는 아니지만 그러한 준비 단계는 탄탄한 결과물을 위해 필수적인 단계이다.
먼저 크게 몇가지를 검색하다 보니 내년 4월('22년)에 디스코드에서 디스코드 봇에 대한 대규모 패치를 한다고 한다. 간단하게 설명해보자면 봇을 개발할 때 허가를 받아야 하는 부분이 생긴다는 것이다. 지금은 봇의 권한에 대해 제한이 없는데 내년부터 생긴다는 것이었다. 사실 내가 개발하는 규모에는 영향을 미치지 않아 패스할 수 있었지만 이런 정보는 굉장히 크리티컬 하기에 기억해두면 좋은 정보이다.
그다음 나는 개발 언어를 선정하려했다. 사이드 프로젝트 개발에 주로 사용하는 파이썬을 시작하자마자 뽑아 들었지만 디스코드 봇 개발로는 discord.js, 즉 자바스크립트가 굉장히 잘 되어있다고 해서 둘 간의 문서를 비교해보니 js 쪽이 우월하게 잘 정리되어있고 스텝 바이 스텝으로 꾸려져 있었다. 올해부터 웹 개발을 시작하며 js를 처음 사용해보기도 했고 무언가 더 도움 되는 부분이 있을 것 같아 discord.js로 선택을 하였다.
사실 내가 영어가 약하다보니 이 문서를 보자마자 벽처럼 느껴졌던 것은 사실이다. 그래서 무작정 유튜브에 들어가 discord.js에 대한 튜토리얼을 쭉 진행해보며 문서를 읽기위한 준비를 진행했다. discord.js 문서에서 말하는 guild가 무엇인지 channel과 다른 것이 무엇인지 사용자가 상호작용 할 수 있는 버튼은 어떻게 만들어지고 어떻게 사용되는지 짧은 시간 내에 정말 많은 영상을 둘러 봤던 것 같다. 구독한 채널만 세개가 넘는다.
평일엔 시간이 없어서 주말만 투자해 2주 정도 그렇게 준비를 했고 스스로 정리됐던 몇가지의 정보가 있다.
1. 나의 봇이 어떻게 로그인 되는지 알았다.
2. 명령어를 추가하는 법과 어떻게 사용되는지 알았다. (코드 상에서)
3. js는 정말 무궁무진한 언어였다. (js를 기반으로한 것들이 많다. ex.typescript)
어차피 최종적으로 구현해야하는 모양새는 단 하나도 어려운 흐름이 아니었기에 이정도면 충분하다고 생각했고. 다가오는 주말에는 코드는 완성 시킬 수 있을 것 같았다. 아래는 가장 기본적인 튜토리얼 중에 하나인 Ping-Pong에 대한 코드이다. 자세한건 제일 아래 discord.js guide에서 살펴 볼 수 있다.
const { SlashCommandBuilder } = require('@discordjs/builders'); const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v9'); const { clientId, guildId, token } = require('./config.json'); // 봇의 준비 상태를 체크함. client.once('ready', () => { console.log('Ready!'); }); // 디스코드에서 /를 사용해 명령어에 접근 할 수 있는데 // 그때 사용할 수 있는 명령어를 선언하고 추가하는 부분. const commands = [ new SlashCommandBuilder().setName('ping').setDescription('Replies with pong!'), ] .map(command => command.toJSON()); const rest = new REST({ version: '9' }).setToken(token); rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands }) .then(() => console.log('Successfully registered application commands.')) .catch(console.error); // 사용자가 "/ping"이라는 명령어를 보냈을 때 타는 함수 client.on('interactionCreate', async interaction => { if (!interaction.isCommand()) return; const { commandName } = interaction; if (commandName === 'ping') { await interaction.reply('Pong!'); } }); // 봇이 로그인 하는 부분, 토큰으로 로그인한다. client.login(token);
Welcome to discord.py
discordpy.readthedocs.io
Discord.js
Discord.js is a powerful node.js module that allows you to interact with the Discord API very easily. It takes a much more object-oriented approach than most other JS Discord libraries, making your bot's code significantly tidier and easier to comprehend.
discord.js.org
Discord.js Guide
Imagine a guide... that explores the many possibilities for your discord.js bot.
discordjs.guide
728x90반응형LIST'프로젝트 > Kick-off-bot' 카테고리의 다른 글
kick-off-bot(3) - develop (0) 2022.01.06 kick-off-bot(2) / ping-pong (0) 2021.12.30 kick-off-bot(1) (0) 2021.12.21 디스코드 봇을 만들어달라고? (0) 2021.12.13