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# ドキュメント コメントで詳しく説明されています。
将来的には、コード内のドキュメントに基づいてこのセクションを自動生成するスクリプトを作成します。