.Net C# Discord プログラミング

C#でDiscord Bot開発(Discord.Net)

2020年9月1日

Discord.Net

今回はDiscordのBotをC#(.Net)で開発していこうと思います。
DiscordのBotはいろいろな言語で開発できますが、JavaC#が一番やりやすいかもしれません。
まずは開発環境を整えましょう。

開発環境構築

では開発環境を構築していきましょう。
使用するのはVisual Studioです。C言語系を扱ったことがある人は使い方もわかりますかね。
まずはインストーラーをこのサイトからダウンロードしましょう。

https://visualstudio.microsoft.com/ja/downloads/

赤枠で囲っている「コミュニティ版」をダウンロードしましょう。
で、必要なものを選択してインストールしましょう。今回はこの二つをインストールしておけば十分です。

下の画像の方は無くても良いかもしれませんが一応あると良いかもしれないです。
インストールが完了したら、プロジェクトを作成していきます。

開発環境構築

.Net系のコンソールアプリを作成しますが、「.Netデスクトップ開発」と「.Net Coreクロスプラットフォームの開発」を2種類ともインストールしているとこの二つがC#のコンソールアプリとして出てきます。
お好きな方を......、と言いたいところですが今回は下の「コンソールアプリ(.Net Framework)」でやっていきます。
保存場所やアプリケーション名などは自由に決めてください。

ソリューションエクスプローラーのソリューション名の下の「C#」マークがあるプロジェクト名を右クリックして、「ソリューションのNuGetパッケージの管理」を選択してください。

そうしたら、検索欄に「Discord」と入力して「Discord.Net」をインストールしましょう。

もろもろ終わったら「Program.cs」を開いてプログラムを書いていきましょう。
語彙力が無いので丸写しをしてくれとしか言えませんが......。

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

namespace DiscordDotNet
{
    class Program
    {
        private readonly DiscordSocketClient _client;
        static void Main(string[] args)
        {
            new Program().MainAsync().GetAwaiter().GetResult();
        }

        public Program()
        {
            _client = new DiscordSocketClient();
            _client.Log += LogAsync;
            _client.Ready += onReady;
            _client.MessageReceived += onMessage;
        }

        public async Task MainAsync()
        {
            await _client.LoginAsync(TokenType.Bot, "トークン");
            await _client.StartAsync();

            await Task.Delay(Timeout.Infinite);
        }

        private Task LogAsync(LogMessage log)
        {
            Console.WriteLine(log.ToString());
            return Task.CompletedTask;
        }

        private Task onReady()
        {
            Console.WriteLine($"{_client.CurrentUser} is Running!!");
            return Task.CompletedTask;
        }

        private async Task onMessage(SocketMessage message)
        {
            if(message.Author.Id == _client.CurrentUser.Id)
            {
                return;
            }
            if(message.Content == "こんにちは")
            {
                await message.Channel.SendMessageAsync("こんにちは、" + message.Author.Username + "さん!");
            }
        }
    }
}

トークンについてはこちら。

これで「こんにちは」と入力すると「こんにちは、○○さん!」と返ってくるBotの完成です。
動かすとこんな感じです。(画質がよろしくない!)

まとめ

はい、このくらいであれば簡単ですかね。少しずついろいろな機能を付け足す形で機能を充実させていきましょう。次は......アンケート機能を追加してみましょうか。
次回の記事までお楽しみに!

-.Net, C#, Discord, プログラミング
-