コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】Discord の Bot を作ってみる

はじめに

上記のサイト様が、詳細な内容を記載されていますので、
詳しくは上記のサイト様を閲覧して頂ければと思いますが
自分のブログにも手順をまとめておきます

Bot の作成

  1. 下記のページにアクセスします
    https://discordapp.com/developers/applications/me
     
  2. 「New App」を選択します
     
    f:id:baba_s:20180429200301p:plain
     
  3. 各項目を設定して「Create App」ボタンを押します
     
    • APP NAME:Bot の名前(必須)
    • APP DESCRIPTION:Bot の説明
    • APP ICON:Bot のアイコン
       
      f:id:baba_s:20180429200611p:plain  
  4. 「Create a Bot User」ボタンを押します
     
    f:id:baba_s:20180429200342p:plain
     
  5. 下記の URL に「Client ID」を設定してアクセスします
    discordapp.com/oauth2/authorize?client_id=【Client ID】&scope=bot&permissions=0
     
    「Client ID」は Bot の設定画面で確認できます
     
    f:id:baba_s:20180429202709p:plain  
  6. Bot を追加したいサーバを選択して「認証」ボタンを押します
     
    f:id:baba_s:20180429200351p:plain
     
    これで Bot を作成して Discord のサーバに追加できました

コンソールアプリケーションの作成

f:id:baba_s:20180129175245p:plain

Visual Studio でコンソールアプリケーションを作成したら、
Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します

f:id:baba_s:20180429201446p:plain

「参照」タブを選択して、検索欄に「Discord.Net」と入力して
表示された「Discord.Net」を選択します

f:id:baba_s:20180429201519p:plain

プロジェクトをチェックして「インストール」ボタンを押します
インストールが完了したら、下記のようなプログラムを作成します

using Discord;
using Discord.WebSocket;
using System;
using System.Threading.Tasks;

public static class Program
{
    private static void Main() => MainAsync().Wait();

    private static async Task MainAsync()
    {
        var client = new DiscordSocketClient();
        var token = "【ここに Token を設定】";

        await client.LoginAsync( TokenType.Bot, token );
        await client.StartAsync();

        client.MessageReceived += OnMessageReceived;

        Console.ReadLine();
    }

    private static async Task OnMessageReceived( SocketMessage arg )
    {
        if ( arg.Author.Username == "【ここに Bot の名前を設定】" ) return;
        await arg.Channel.SendMessageAsync( arg.Content );
    }
}

「Token」は Bot の設定画面の「Token:click to reveal」を選択すると確認できます

f:id:baba_s:20180429202837p:plain

これでコンソールアプリケーションの準備が完了しました

f:id:baba_s:20180429203240g:plain

コンソールアプリケーションを実行した状態で
Discord のチャンネルにメッセージを送信すると、
Bot がそのメッセージをそのまま返してくれることが確認できます