search
LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

Organization

中規模Discordに便利!ロールを自動付与できるDiscordBotを作ってみた

この記事は プロトアウトスタジオのアドベントカレンダー2020 の3日目の記事です!
去年 も3日目だった…)

どうも、プロトアウトスタジオ1期生で、同スクールで講師も務めるようになったおの(@tkyk)です!

はじめに

大学の授業でもDiscordを使いたい

Slackと違ったDiscordの良さ

Image from Gyazo

カテゴリーがあるのがよい!
授業を複数受け持っているので、それらで分けられ、その授業の受講生はそのカテゴリーしか見れないようにすればよさそう

Image from Gyazo

一つの授業内でも細かくグループを分けて、グループワークをさせたり、教師の方から見回り(実際の通話はZoomのブレイクアウトルームを使用)できる。

グループを小さくすることで、結構質問が出てくる。
(今回の自分の授業は1グループ4,5人にしました)

いざ作ってみる

参考:https://note.com/bami55/n/ncc3a68652697

Bot設定

ここ(https://discord.com/developers/applications) から

「New Application」を押し、Botの名前を記入

Image from Gyazo

「Bot」から「Add Bot」

Image from Gyazo

「OAuth2」から「bot」のチェックを入れ招待するURLをコピー

Image from Gyazo

URLをブラウザで開いてサーバーへBotを招待

Image from Gyazo

追加されていればオッケー

Image from Gyazo

開発に必要な情報取得

「OAuth2」内からトークンをコピー

Image from Gyazo

(必要ならば)実際にDiscordへログイン後、「サーバー設定」->「ウィジェット」からサーバーIDの取得

Image from Gyazo

Node.jsを書く

参考:https://discord.js.org/#/

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の取得は一回プログラムを実行して確認する

今後

  • 実際に運用までしてみたい
    • 「!autoRole @ロール名」みたいな感じでメッセージでコマンド送ると招待URL勝手に生成してくれるとか
    • でも入ってきた人はどんな招待コードから入ってきたかの情報がわからない
  • 複数ロールを付与したい
    • 自分の授業を複数受講してくれる学生もいたけど、その人は手作業の追加だった

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3