ChatBot の作成

メモ

ヒント

現時点では、このページには ChatBot API の最低限な情報のみ含まれており、基本的な ChatBot の作成方法を学習するには十分な内容です。 詳しくは ChatBot.cs新しいタブで開くサンプルをご覧ください。 このページは今後変更される予定です。

Minecraft Console Client には ChatBot(プラグイン)を作成することができる豊富な C# API があり、複雑な自動化システムを作成するのに便利です。

必要条件

  • C# の基礎知識
  • テキスト エディター

C# に関する基本的な知識がない場合は、C# の基本に慣れてください。

短期集中コース

より深く学ぶには:

簡単な紹介

C# の基本的な知識があることを前提としています。

ヒント

ここでは、「ChatBot」と「スクリプト」は同じ意味の用語として使用します。

MCC がインストールされているフォルダーと同じ場所に、新しい C# ソース ファイル ExampleChatBot.cs を作成します。

次のサンプル コードを貼り付けます。

//MCCScript 1.0

MCC.LoadBot(new ExampleChatBot());

//MCCScript Extensions

// The code and comments above are defining a "Script Metadata" section

// Every single chat bot (script) must be a class which extends the ChatBot class.
// Your class must be instantiates in the "Script Metadata" section and passed to MCC.LoadBot function.
class ExampleChatBot : ChatBot
{
    // This method will be called when the script has been initialized for the first time, it's called only once
    // Here you can initialize variables, eg. Dictionaries. etc...
    public override void Initialize()
    {
        LogToConsole("An example Chat Bot has been initialized!");
    }

    // This is a function that will be run when we get a chat message from a server
    // In this example it just detects the type of the message and prints it out
    public override void GetText(string text)
    {
        string message = "";
        string username = "";
        text = GetVerbatim(text);

        if (IsPrivateMessage(text, ref message, ref username))
        {
            LogToConsole(username + " has sent you a private message: " + message);
        }
        else if (IsChatMessage(text, ref message, ref username))
        {
            LogToConsole(username + " has said: " + message);
        }
    }
}

MCC を起動し、サーバーに接続して、内部コマンド /script ExampleChatBot.cs を実行します。

正常に動作すると、メッセージ [Example Chat Bot] An example Chat Bot has been initialised! がコンソール ログに表示されます。

ChatBot の構造

ChatBot(スクリプト)の構造は次のとおりです。

<script metadata>
<chat bot class>

Script Metadata は、コメントを使用して C# と MCC の形式を組み合わせたカスタム形式のセクションです。

すべての ChatBot(スクリプト)の最初にこのセクションが必要です。

Script Metadata 形式

//MCCScript 1.0 は、Script Metadata セクションの開始を示します。最初の行に書かれていないと、ChatBot(スクリプト)が読み込まれず、エラーが発生します。

//MCCScript Extensions は、Script Metadata セクションの終了を示します。ChatBot(スクリプト)クラスの前に定義する必要があります。

ChatBot(スクリプト)が //MCCScript 1.0 の行と //MCCScript Extensions の行の間で正常に読み込まれるようにするには、ChatBot(スクリプト)クラスをインスタンス化し、それを MCC.LoadBot 関数に渡す必要があります。

サンプル コード:

MCC.LoadBot(new YourChatBotClassNameHere());

Script Metadata セクションでは、C# パッケージとライブラリを次のように含めることができます: //using <namespace> または /dll <dll name>

ヒント

// と文字列の間に空白を追加しないでください。

デフォルトでは、次のパッケージが読み込まれます。

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Threading;
using MinecraftClient;
using MinecraftClient.Mapping;
using MinecraftClient.Inventory;

サンプル:

//using System.Collections.Immutable
//dll MyDll.dll

サンプル:

//MCCScript 1.0

//using System.Collections.Immutable
//dll MyDll.dll

MCC.LoadBot(new ExampleChatBot());

//MCCScript Extensions

ChatBot クラス

Script Metadata セクションの終了後、基本的に必要な数のクラスを定義できます。ChatBot(スクリプト)のメイン クラスが ChatBot クラスを拡張する必要があります。

すべて任意のメソッドで、必須ではありません。

ChatBot(スクリプト)が初めてイニシャライズされると、Initialize メソッドが呼び出されます。

その中で、Dictionaries などの変数をイニシャライズすることができます。

ヒント

データベース接続などのリソースの割り当てについては、AfterGameJoined で割り当て、OnDisconnect で解放することをお勧めします。

.

サンプル

ChatBots新しいタブで開くconfig新しいタブで開く の GitHub リポジトリでサンプルをご覧ください。

C# API

執筆時点では、まだマージされていないフォークで C# API が変更されているため、ChatBot.cs新しいタブで開く を参照用に使用することができます。

各メソッドは、標準の C# ドキュメント コメントで詳しく説明されています。

将来的には、コード内のドキュメントに基づいてこのセクションを自動生成するスクリプトを作成します。