예제 때문에 github 에 올렸는데 귀신같이 알아채는군요 ㄷㄷㄷ

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




일단 개요부터

 

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");
  }
});

 

 

다음 영상에서는 최종 동작을 구현하고 더 심오한 문제를 다룰려고 합니다.

영상마지막에 코멘트 남겼으니 봐주세요


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,




삽질기 입니다. 영상으로 강좌를 준비중입니다.

강좌는 다른 곳에 쓸예정입니다.

 

디스코드로 들어와서 NFT 를 보유중이면 권한을 열어줘서 

전용 채팅방에 들어가게 하는게 목표입니다.

 

https://www.youtube.com/watch?v=yACTIzVyOUA&t=332s 

 


WRITTEN BY
SIDNFT
게임개발자에서 WEBGL 웹개발자로 전환중

,