일단 개요부터
https://www.youtube.com/watch?v=Usfl1kldOSY
2번째 영상입니다.
디스코드 인증 페이지 -> 인증코드 얻기 -> 유저 정보 얻기 입니다.
https://www.youtube.com/watch?v=U1KjkhDZGyY
드디어 node 버전을 16으로 올렸습니다.
설치가 빠르네요.
3번째 영상입니다.
카이카스로 지갑 인증을 하는 부분입니다.
웹작업을 어떻게 하는지 모르겠다는 의견이 있어서
각종 실패 상황을 편집없이 넣어서 내용이 매우 길어졌습니다.
https://www.youtube.com/watch?v=2QEZlt5bcfk
4번째영상
https://www.youtube.com/watch?v=01mXs_j_JGQ
드디어 디스코드봇을 코딩합니다.
아주 오래 걸랬습니다.
디코봇에 코드는 https://github.com/GoToTheMetaverse/klay-tutorial-v2/blob/main/klaytn-07-3/bot.js
여기 링크를 보시면 되구요
모듈 설치가 필요하구요
npm install discord.js
맴버에게 역활 주는 코드
member.roles.add(role);
맴버에게 역활 뺏는 코드
member.roles.remove(role);
채널에 채팅 보내는 코드
channel.send("bot start");
말대꾸 해주는 코드
msg.reply("b");
메시지 받아서 다시 돌려줘야하는데
디코봇이 말한 내용도 들어오기때문에 이부분 잘못처리하면 무한 채팅이될 수 있으니 주의
if (msg.author.bot) return;
요런 코드가 필요합니다.
5번째영상입니다.
https://www.youtube.com/watch?v=fsE9dq95jt4
이 영상에서는 MessageEmbed 를 이용해 버튼과 URL 링크를 붙입니다.
디코봇이 실행될때 예전 메세지를 지우는 코드도 들어가있습니다.
const ch_verify = guild.channels.cache.get(Verify.channel_id);
const old_msg = await ch_verify.messages.fetch();
ch_verify.bulkDelete(old_msg);
버튼을 누르면 리액션 이 콜백으로 오는데요 이때 message 의 user 와 두번재인자값으로 오는 user 가 다르니 주의하세요
message 의 user 는 디코봇이 오구요
user 는 리액션을 한 유저가 오게 됩니다.
리액션에 역활 주려고 했는데 동작이 안되서 한참 해맸습니다.
// reaction.message.member 는 디코봇이구요
// user 는 리액션을 사람입니다. 둘은 서로 다르니 주의 하세요
client.on("messageReactionAdd", async (reaction, user) => {
if (user.bot) return;
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (!reaction.message.guild) return;
if (reaction.message.channelId == Verify.channel_id) {
Verify.reaction(reaction, user);
} else {
console.error("messageReactionAdd no ch");
}
});
다음 영상에서는 최종 동작을 구현하고 더 심오한 문제를 다룰려고 합니다.
영상마지막에 코멘트 남겼으니 봐주세요