音声チャット🔊への出入りお知らせbot🎐を作ったお話 #1 〜易しい概要と下ごしらえ〜
はじめに
初めまして〜!よっしい(🔗Twitter)と言います。
VC では Discord というサービス内の「出入り通知Bot」というお知らせ機能を管理しています。
この記事では、Discord 内の bot について、僕が作ったときの経験を踏まえて易しい説明と作り方や運用をお伝えします。ユーザー目線でも分かる易しい概要🌱と、技術的だったり高度だったりな詳細🧰は節を分けて書くので、技術的な節はお好みで読み飛ばしてもらえればと。
今回は、全体の大まかな流れと、bot 作りの前準備までをお伝えしていきます。
Discord って何? 🌱
Discord を知らない方向けに軽く紹介します。(知ってるよ!って方は次の節へどうそ〜)
Discord は、テキストチャット・ボイスチャット・画面共有などがサーバー(公開/限定公開のグループ)内で楽しめるサービスです。Instagram みたいな SNS や、LINE みたいなメッセージングサービスの一つですね。スマホアプリとしてや、ブラウザでWebアプリとして使えます。
Discord のボイスチャットと通知 🌱
その Discord、メンバー同士でやり取りするのに優れてて、一つのサーバー内でも話題やメンバーのカテゴリごとに表示したり設定したりできます。もちろん、通知も細かく設定できます!
ただ、小さいサーバーや不定期に動きがあるサーバーでボイスチャットの様子を知るには不便なところがあり……参加しているサーバーでボイスチャットが開始・終了したときや、誰かがボイスチャットに参加・退出したときの全体通知機能は無いんですよね。
しかし、Discord bot なら通知機能を実現できます!
※「bot」 とは、「生身の人間が動かす」ユーザーに対して、「プログラムが動かす」ユーザーみたいなものを言います。
Discord bot でできるって? 🧰
Discord には、bot が公式にサポートされているという強みがあります!標準で用意されてない機能でも、Discord 側がシステムの操作・情報の取得を取り持ってくれるものを使ってできることなら、bot で実現できます。公式が提供してる bot もあります。
ちなみに、こんな「アプリのプログラム同士の橋渡しをする仕組み・部分」を API(アプリケーション プログラミング インターフェース) って言います。
Webページに埋め込まれた YouTube の動画も、Twitter の外部サービスとの連携も API によるものですね!
自作の Discord bot を動かすまでの流れ
bot 動かすって実際どうやるの?ってところですが、大まかにはこんな感じになります:
制作に必要なプログラムの準備をする(他の人が公開してる bot を使うときは不要)
bot のプログラムを組むための環境を入れる
実行に必要なプログラムを準備する
bot のプログラムを動かすための環境(実行時環境、runtime environment)を入れる
bot のプログラムを用意する
bot 用のアカウントを設定する
bot のプログラムを実行する
(手直し、保守、運用など)
それなりに手順が多いように見えるかもですが、必須の作業時間はそうかかりません!プログラムを自作する部分では色んな機能を作り込めるので、実際の作業時間は作り込みが左右します。末節に時間を取られずに作り込みに集中できるということでもありますね!
プログラム周りの環境を選ぶ 🧰
Discord と連携してプログラムを動かすためには、Discord API を通してDiscord 側のプログラムとやり取りをすることになります。ここで、bot 側のプログラムの開発環境として、何らかの環境を用意する必要があります。開発環境ごとにプログラムを作るために使うプログラミング言語が決まるので、自分が得意な言語が使えるものを選ぶと良いかと。
Discord のライブラリ(開発用プログラム)
さて、Discord API を使うにあたって、HTTP request などで API を低層で直接叩くようなプログラミングもできます。できますが……必要以上に複雑になります。そんな細々とした部分を包み込んで使いやすくしてくれるライブラリが有志の皆さんによって公開されているので、それを使うことをおすすめします。Discord 公式の開発者向けサイトでも、色んな非公式ライブラリがまとめられています(🔗Discord Libraries)。
得意な言語があるならそれが使えるライブラリから選べば良いですが、特にこだわらないなら、1番人気の discord.js(言語は JavaScript)をお勧めします。discord.py(言語は Python)も悪くないんですが、開発がしばらく凍結されていたこともあって、他の Python 系ライブラリに人気が分散していて情報を調べ辛いところがあります。
この記事ではライブラリとして discord.js を選んだ場合を取り上げることにします。
プログラムの実行環境
使うライブラリの discord.js には JavaScript を実行できる環境が必要なので、実行環境としては Node.js を採用します。Webページ上以外で JavaScript を実行する環境として無難な選択肢です。
プログラムの開発環境と実行環境を用意する
プログラム周りの環境をどれにするか決めたら、実際に環境を整えていきましょう!この作業は、よく「環境構築」と言われます。
ここからは実作業になります。この記事では、次のような環境を取り上げることにします
OS:Windows 11(Windows 10 でも可)
Windows Package Manager(winget、アプリ インストーラー)のインストールを推奨
Windows 11 なら最初からインストール済み(たぶん)
ストア以外のアプリのインストールが簡単に間違いなくできる
Microsoft Store からインストールできます(🔗アプリ インストーラー)
コマンドラインシェル(下で説明します):PowerShell
Winget 導入済みならコマンド 「winget install --id Microsoft.PowerShell --exact」 でインストールできます
コード編集アプリ:Visual Studio Code(メモ帳よりずっと楽)
Winget 導入済みならコマンド 「winget install --id Microsoft.VisualStudioCode --exact」 でインストールできます
実行環境(・狭義の開発環境):Node.js
Winget 導入済みならコマンド 「winget install --id OpenJS.NodeJS --exact」 でインストールできます
Discord API 用ライブラリ: discord.js
コマンドラインを扱う
マウスやタッチパッドでのやり取りである GUI(Graphical User Interface)に対して、文字列でのやり取りである CUI(Character User Interface)というものがあります。繰り返す作業や決まりきった作業には、手間を減らしたり、作業を確実にしたり、記録を取りやすくする意味などで CUI が好まれます。
Windows には、CUI でのやり取りとしてコマンドを受け付けるためのプログラムとして PowerShell があります。Windows 10、Windows 11 には最初から Windows PowerShell 5.1 という古いバージョンが入っていますが、もう開発もされてないものなのです。せっかくなので、現行の PowerShell をインストールしましょう!
PowerShell をインストールする
「⊞ Win + X」 → 「I」 で直接 Windows Terminal(ターミナル)を開きます。もしくは 「⊞ Win + S or Q」 の検索欄に 「terminal」 と打ち込んで ターミナル を選んで開きます。
開いた CUI に 「winget install --id Microsoft.PowerShell --exact」 を貼り付けて、改行します。
これで PowerShell がインストールされました。以降はこちらを使います。アンインストールするときは、 「winget uninstall --id Microsoft.PowerShell --exact」 でできます。
VSCode をインストールする
PowerShell を開きます。
開いた CUI に 「winget install --id Microsoft.VisualStudioCode --exact」 を貼り付けて、改行します。
これで VSCode がインストールされました。アンインストールするときは、 「winget uninstall --id Microsoft.VisualStudioCode --exact」 でできます。
Node.js をインストールする
PowerShell を開きます。
開いた CUI に 「winget install --id OpenJS.NodeJS --exact」 を貼り付けて、改行します。
これで Node.js がインストールされました。アンインストールするときは、 「winget uninstall --id OpenJS.NodeJS --exact」 でできます。
ここまでのまとめ
お疲れさまです!ここまでで、bot 作りの環境構築ができました。次回は実際に bot を動かすまでを追っていきます。ここまで読んで頂いてありがとうございました。
何か分からないところなどあれば、気軽に聞いてください!
この記事が気に入ったらサポートをしてみませんか?