创建 Chat Bots

注意事项

提示

目前,此页面仅包含聊天机器人API的基础知识,这些详细信息足以教您如何制作基本的聊天机器人。 欲了解更多详情,您需要查看 [ChatBot.cs](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Scripting/ChatBot.cs)和 [Examples](#exames)。 此页面将在未来得到改进。

Minecraft控制台客户端 拥有丰富的 C# API ,允许您创建聊天机器人(有效插件),帮助您创建复杂的自动化系统,而正常脚本可能无法做到这一点。

要求

  • C# 编程语言的基本知识
  • 文本编辑器

如果您不熟悉C# 编程语言,我们建议查看以下资源:

速成教学

更多深度:

快速介绍

本导言假定您拥有C#的基本知识。

提示

在这里我们将使用条款聊天机器人和脚本互换

创建一个新的空文件并在您安装MCC的同一文件夹中命名 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. 等...
    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! 出现在你的控制带记录中.

chat bot的结构

Chat bot的结构如下:

<script metadata>
<chat bot class>

Script Metadata是一个可以自定义的部分,它需要使用注释将 C# 与我们的格式在一起。

每个chat bot(script)必须在开头有这个部分才能工作。

Script Metadata 的格式

//MCCScript 1.0 标记Script Metadata部分的开始,这必须写在第一行,否则聊天chat bot(script)将不会加载并引发错误。

//MCCScript Extensions 标记 Script Metadata 元数据部分的结尾,你必须在写Chat Bot (Script) class之前写上这个。

为了使您的Chat Bot (Script)在 //MCCScript 1.0//MCCScript Extensions 之间正确加载,您必须用符合mcc定义的代码编写您的Chat Bot (Script) class并将其传递给 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

Chat Bot Class

Script Metadata 部分结束后,您基本上可以定义您想要的class。 唯一的限制是您的 Chat Bot (Script) class必须是 ChatBot class.

一切都是可能的。

当 Chat Bot (Script)首次初始化时 Initialize 将被调用。

在其中您可以初始化变量,例如: 字典 等...

提示

对于分配像数据库连接这样的资源,我们建议在 AfterGameJoined 中分配它们,并在 OnDisconnect 释放它们

.

事例

您可以在GitHub 聊天机器人在新窗口打开配置中找到很多示例在新窗口打开

C# API

在撰写本文时,C# API 已在尚未合并的分支中进行了更改,因此现在您可以使用ChatBot.cs在新窗口打开作为参考。

每种方法都通过标准 C# 文档注释进行了详细注释。

以后,我们将会根据代码中的文档制作一个脚本来自动生成这个部分。