중규모 Discord에 편리! 롤을 자동 부여할 수 있는 DiscordBot을 만들어 보았다

이 기사는 프로토아웃 스튜디오 어드벤트 캘린더 2020의 3 일째 기사입니다!
( 작년 역시 3일째였다…)

아무래도, 프로토아웃 스튜디오 1기생으로, 동 스쿨에서 강사도 맡게 된 것( 트위터 )입니다!

소개



대학 수업에서도 Discord를 사용하고 싶습니다.

Slack과 다른 Discord의 장점





카테고리가 있는 것이 좋다!
수업을 여러 개 가지고 있기 때문에, 그들로 나뉘어져 그 수업의 수강생은 그 카테고리밖에 볼 수 없게 하면 좋을 것 같다



하나의 수업 내에서도 세세하게 그룹을 나누어, 그룹 워크를 시키거나, 교사 쪽으로부터 둘러볼(실제 통화는 Zoom의 브레이크 아웃 룸을 사용) 할 수 있다.

그룹을 작게 함으로써 상당히 질문이 나온다.
(이번 자신의 수업은 1그룹 4,5명으로 했습니다)

막상 만들어 보자



참고 : h tps : //에서. 코m/바미 55/n/뭉 c3아 68652697

Bot 설정



여기( htps : // ㎢ s rd. 코 m / ゔ ぇ ぺ rs / 아 p ぃ 카치 온 s )에서

New Application을 눌러 Bot의 이름을 기입



'Bot'에서 'Add Bot'



'OAuth2'에서 'bot'을 선택하여 초대할 URL 복사



URL을 브라우저에서 열고 서버에 Bot 초대



추가되면 오케이



개발에 필요한 정보 취득



OAuth2 내에서 토큰 복사



(필요하다면) 실제로 디스코드에 로그인 한 후 "서버 설정"-> "위젯"에서 서버 ID 가져 오기



Node.js 쓰기



참고 : htps : // ぢs이 rd. js. rg/#/
npm i discord.js
const Discord = require('discord.js');
const client = new Discord.Client();

// https://discord.com/developers/applications
const BOT_TOKEN = 'コピーしたbotのトークン';

// guild id
const SERVER_ID = 'コピーしたサーバーID';

// 付与したいロールのID
// IDの取得は一回プログラムを実行して確認する
const ROLES_ID = '付与したいロールのID';

client.on('ready', async () => {
  console.log(`Logged in as ${client.user.tag}!`);
  const guild = await client.guilds.fetch(SERVER_ID);
  const rols = await guild.roles.fetch();
  rols.cache.forEach(role => {
    console.log(role.name + ' : ' + role.id);//idが確認できる
  })
});

client.on('guildMemberAdd', async (member) => {
  // ロールを自動付与
  const addRole = await member.guild.roles.fetch(ROLES_ID);
  member.roles.add(addRole);
});

client.login(BOT_TOKEN);

부여하고 싶은 역할의 ID의 취득은 1회 프로그램을 실행해 확인한다

미래


  • 실제로 운용까지 해보고 싶다
  • "! autoRole @ 롤 이름"같은 느낌으로 메시지로 명령 보내면 초대 URL 마음대로 생성해 주거나
  • 그러나 들어온 사람은 어떤 초대 코드에서 들어 왔는지에 대한 정보를 모른다

  • 여러 역할을 부여하고 싶습니다.
  • 자신의 수업을 복수 수강해 주는 학생도 있었지만, 그 사람은 수작업의 추가였다

  • 좋은 웹페이지 즐겨찾기