-
kick-off-bot(3) - develop프로젝트/Kick-off-bot 2022. 1. 6. 09:06
이전에 쓴 글처럼 이제 나에게 필요한 명령어를 작성하고 그에 맞는 상호작용 옵션을 사용해서 코드를 작성해 나가면 된다. 아래는 내가 쓴 코드의 일부이다.
client.on("interactionCreate", async (interaction) => { const { commandName } = interaction; if (!interaction.isCommand()) return; if (commandName === "team") { memberCount.flag = true; memberCount.splitFlag = true; await interaction.deferReply(); memberCount.a = parseInt(interaction.options.getString("a")); memberCount.b = parseInt(interaction.options.getString("b")); const btn = new MessageActionRow().addComponents( new MessageButton().setCustomId("join").setLabel("참가").setStyle("SUCCESS"), new MessageButton().setCustomId("not").setLabel("참가안함").setStyle("DANGER") ); const embed = new MessageEmbed().setColor("#FFFFFF").setTitle("🛎 내전 모집"); await interaction.editReply({ embeds: [embed], components: [btn], }); } else if (commandName === "split") { let embed; if (memberCount.splitFlag) { let s1 = memberCount.a; let s2 = memberCount.b; let result = memberProcess(userList, s1, s2); if (!result.flag) { if (result.length === 0) { embed = new MessageEmbed() .setColor("#FFFFFF") .setTitle("⚽️ 인원을 모집해주세요"); } else { embed = new MessageEmbed() .setColor("#FFFFFF") .setTitle("⚽️ 알림") .setDescription( `인원이 부족합니다. 현재 신청 인원 ${result.length}명` ); } await interaction.deferReply(); await interaction.editReply({ embeds: [embed], components: [] }); } else { embed = new MessageEmbed() .setColor("#FFFFFF") .setTitle("⚽️ 결과") .setDescription( `1️⃣ : ${result.t1} \n\n 2️⃣ : ${result.t2} \n\n 📌 : ${result.waitingMember}` ); await interaction.deferReply(); await interaction.editReply({ embeds: [embed], components: [] }); } memberCount.splitFlag = false; } else if (!memberCount.splitFlag) { userList = []; embed = new MessageEmbed() .setColor("#FFFFFF") .setTitle("⚽️ 알림") .setDescription("모집을 다시 실행시켜주세요. 인원이 리셋됩니다."); await interaction.deferReply(); await interaction.editReply({ embeds: [embed], components: [] }); } } else if (commandName === "reset") { userList = []; const embed = new MessageEmbed() .setColor("#FFFFFF") .setTitle("⚽️ 알림") .setDescription("인원이 리셋됩니다."); await interaction.reply({ embeds: [embed], components: [] }); } });
보면 느끼겠지만 정말 정말 보기가 힘든 조건문 덩어리이다. 아마 이것을 다시 리팩토링하는 과정에서 또다시 많이 배울 것 같다. 다른 사람들이 작성한 코드들을 보면 이렇게 복잡해 보이지도 않고 모듈화를 시켜놓아서 훨씬 보기 쉽고 편하게 되어있다. 저 코드를 작성할 당시 나는 js의 export를 제대로 모르고 있었기 때문에 저렇게 작성했지만 이후에 vue를 공부하면서 js에 대해 더 알게 되었고 나의 저 조건문 덩어리를 어떻게 수정해야 할지 머릿속에 그릴 수 있었다. 회사 프로젝트가 끝날 때 수정을 해보려고 한다.
봇 자체는 완성이 되었고 이제 서버에 올릴 일만 남았다. 돈을 주고 AWS를 쓸까 하다가 너무 가벼운 프로그램이라 무료 클라우드를 사용하기로 했다. 그래서 찾아본게 `heroku`이다. 지나다니면서 몇 번 봤던 이름이라 낯설지는 않았다.
728x90반응형LIST'프로젝트 > Kick-off-bot' 카테고리의 다른 글
kick-off-bot(2) / ping-pong (0) 2021.12.30 kick-off-bot(1) (0) 2021.12.21 무엇을 먼저 알아야할까? (0) 2021.12.19 디스코드 봇을 만들어달라고? (0) 2021.12.13