5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プロトアウトスタジオAdvent Calendar 2020

Day 3

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

Last updated at Posted at 2020-12-03

この記事は プロトアウトスタジオのアドベントカレンダー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勝手に生成してくれるとか
    • でも入ってきた人はどんな招待コードから入ってきたかの情報がわからない
  • 複数ロールを付与したい
    • 自分の授業を複数受講してくれる学生もいたけど、その人は手作業の追加だった
5
4
0

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
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?