C#でDiscordのBotを作ろう

Discordはとても素晴らしいコミュニケーションツールです。
今回はそんなDiscordでBotを作る時のための自分用の備忘録も兼ねて書き残しておこうと思います。
ある程度C#はわかっている前提です


今回の環境

  • windows10 Pro 64bit
  • Visual Studio 2017 Community
  • Discord.Net 1.0.2 – 以下環境依存パッケージ

 

1.Discordアカウント登録

とにもかくにもDicordアカウントを作らなければ話になりません。

  1. ここから新規登録をしましょう。
  2. ログインをして、サーバーを作成してください。
  3. windowsにDiscordのクライアントを導入することを強くお勧めします。

 

2.Botの登録

  1. ここを開いてNew Appをクリック。
  2. APP NAMEにBot名を入力(日本語可)
    APP DESCRIPTIONにBotの説明を入力(日本語可)
    APP ICONにBotのアイコン画像を登録。
  3. Create Appをクリック。
  4. Botの詳細ページが表示されるので、
    Create a Bot Userをクリック。
  5. 表示されたClient IDtokenをメモしておく。
  6. discordapp.com/oauth2/authorize?client_id=コピーしたClient ID&scope=bot&permissions=0
    をブラウザのURL欄に入力し開く。
    するとサーバー選択が表示されるので、Botを追加したいサーバーを選択して認証をクリック。
  7. サーバーにBotが追加されたことを確認する。

 

3.プログラムの作成

Botのプログラムをなんとなくで作成する。

  1. プロジェクトから新規作成。
    今回はコンソールアプリ(.NETFramework)を選択
  2. ソリューションエクスプローラーからプロジェクトを右クリック。
    アプリケーションタブからターゲットフレームワーク.NETFramework4.6.2に選択。
  3. ソリューションエクスプローラーからプロジェクトを右クリック。
    Nugetパッケージの管理を選択。
    参照タブの検索入力欄にDiscord.Netを入力、見つかったパッケージをインストール。
  4. とりあえず説明が面倒なので以下を参考にプログラムしてみてほしい(ごめん)
    このようにすればとりあえずユーザーがサーバーにログインしたときやログアウトしたとき、また何か発言したときのイベントを拾うことができる。

4.コマンドの実装

今回は簡単に!pingと打つとpongと帰ってくるだけのコマンドを実装してみることにする。

  1. ソリューションエクスプローラーからプロジェクトを右クリックして適当なクラスファイルを作成する。
  2. 作成したクラスに
    using System.Threading.Tasks;
    using Discord.Commands;
    を追記
  3. class クラス名となっているところをpublic class クラス名 : ModuleBaseに書き換え。
  4. 処理を書く。

あとはビルドしてBotがいるサーバーに!pingと打ってみてpongと返ってくれば成功。

5.Discordを開発者モードにしよう

Discordを開発者モードにすることで、各チャンネルやサーバーのIDを取得できるようになるので非常に便利。

  1. Discordアプリケーションの自分の名前の横にある歯車マークをクリック。
  2. テーマタブをクリックして下の方に行くと詳細設定の欄に開発者モードというのがあるのでそれを有効にする。
  3. IDを調べたいサーバーやチャンネルを右クリックするとIDをコピーが表示されていると思うので、それをクリックすれば取得できます。
%d人のブロガーが「いいね」をつけました。