创建 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# 文档注释进行了详细注释。
以后,我们将会根据代码中的文档制作一个脚本来自动生成这个部分。