Erstellen von Chatbots
Anmerkungen
Tipp
Im Moment enthält diese Seite nur die Grundlagen der Chat-Bot-API, genug Details, um dir beizubringen, wie du einfache Chatbots erstellst. Für weitere Details solltest du einen Blick auf die ChatBot.cs und Examples werfen. Diese Seite wird in Zukunft verbessert.
Der Minecraft Console Client hat eine reiche C# API, mit der du Chat-Bots (effektiv Plugins) erstellen kannst, die dir helfen können, komplexe Automatisierungen zu erstellen, die normale Skripte möglicherweise nicht durchführen können.
Voraussetzungen
- Grundkenntnisse in der Programmiersprache C#
- Ein Texteditor
Wenn du die Programmiersprache C# nicht kennst, empfehlen wir dir folgende Ressourcen anzuschauen:
Crashkurse:
Erweiterte Ressourcen
- "Learn C#" Youtube Playlist von Microsoft
- "Getting started with C# (An index of tutorials and the documentation)" von Microsoft
Kurze Einführung
Dieses Tutorial setzt voraus, dass du Grundwissen in C# hast.
Tipp
Hier verwenden wir Begriffe Chatbot und Skript austauschbar
Erstelle eine neue Datei in dem gleichen Ordner, in dem du MCC installiert hast. Nenne sie ExampleChatBot.cs
.
Füge den folgenden Beispielcode ein:
//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. usw...
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);
}
}
}
Starte MCC und verbinde dich zu einem Server. Führe folgenden Befehl aus: /script ExampleChatBot.cs
Wenn du alles richtig gemacht hast, solltest du folgendes in der Konsole sehen: [Example Chat Bot] An example Chat Bot has been initialised!
Struktur der Chatbots
Chatbot (Skript) Struktur ist folgende:
<script metadata>
<chat bot class>
Skript-Metadaten ist ein Abschnitt mit einem benutzerdefinierten Format, der mithilfe von Kommentaren in C# mit unserem Format mischt.
Jeder einzelne Chatbot (Skript) muss diesen Abschnitt am Anfang haben, um zu funktionieren.
Skript-Metadatenformat
//MCCScript 1.0
markiert den Anfang des Abschnitts Skript-Metadaten. Diese Zeile muss immer in der ersten Zeile stehen, sonst wird der Chatbot (Skript) nicht geladen und es wird ein Fehler ausgegeben.
//MCCScript Extensions
markiert das Ende des Skript-Metadaten Abschnitt, dies muss vor einer Chatbot (Skript) Klasse definiert werden.
Damit der Chatbot (Skript) richtig zwischen den //MCCScript 1.0
und die //MCCScript Extension
Zeilen lädt muss du die Chatbot (Skript) Klasse instanziieren und an die MCC.LoadBot
Funktion übergeben.
Beispielcode:
MCC.LoadBot(new YourChatBotClassNameHere());
Skript-Metadaten Abschnitt erlaubt das Einbinden von C# Paketen und Bibliotheken mit: //using <namespace>
und /dll <dll name>
.
Tipp
Vermeiden das Hinzufügen von Leerzeichen zwischen //
und Keywords
Standardmäßig werden folgende Pakete geladen:
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;
Beispiel:
//using System.Collections.Immutable
//dll MyDll.dll
Vollständiges Beispiel:
//MCCScript 1.0
//using System.Collections.Immutable
//dll MyDll.dll
MCC.LoadBot(new ExampleChatBot());
//MCCScript Extensions
Chatbot-Klasse
Nach dem Ende des Abschnitts Skript-Metadaten kann man grundsätzlich beliebig viele Klassen definieren die einzige Einschränkung ist, dass die Hauptklasse deines Chatbots (Skript) ChatBot
Klasse erweitern muss.
Es gibt keine erforderlichen Methoden, alles ist optional.
Wenn der Chatbot (Skript) zum ersten Mal initialisiert wurde, wird die Initialisierung
Methode aufgerufen.
Darin kann man z.B. Variablen initialisieren. Wörterbücher, usw..
Tipp
For allocating resources like a database connection, we recommend allocating them in AfterGameJoined
and freeing them in OnDisconnect
Beispiele
You can find a lot of examples in our Git Hub Repository at ChatBots and config.
C#-API
As of the time of writing, the C# API has been changed in forks that are yet to be merged, so for now you can use the ChatBot.cs for reference.
Each method is well documented with standard C# documentation comments.
In the future we will make a script to auto-generate this section based on the documentation in the code.