- Native Minecraft Version:
- Tested Minecraft Versions:
Minebot is a fully customizable chatbot & chat moderator made for Minecraft servers. Unlike other chatbot plugins, Minebot uses machine learning, deep learning, and fuzzy logic to do a better job of understanding what its users want. Minebot can answer messages and even execute console commands of any character count. The possibilities are almost endless. Minebot can also help you with chat moderation, kicking or muting players who attempt to say slurs, obscene words. You can enable or disable this feature anytime you want.
All the processing happens on Minebot Cloud (the web service that powers Minebot), so your Minecraft Server won’t get overloaded by running machine learning models. You don’t have to worry about any performance impact, and almost all updates will happen on my end, eliminating the need to download a new plugin version every time. Minebot Cloud receives frequent updates, and most times you won’t even notice when it happens.
Please read everything carefully. This is a complex plugin, and all sections of this text are important to understand how to use it.
How it works: technical overview
The user has a goal in mind when sending a message to a bot. This goal is called intent, and the chatbot job is to parse the message to understand what the user wants and react accordingly. There are many ways to create chatbots. We train most of them with labeled questions & answers. For each intent, provide some examples of messages (used for intent classification), and what answers it should give. Minebot also works like this.
The main algorithm behind Minebot can compute the semantic similarity between two sentences and can handle spelling errors. Although not perfect, it works pretty well most of the time. Those are some examples of how Minebot’s semantic matching works:
Thanks to this algorithm users don't have to type the exact same messages used to train Minebot. They can type messages with similar meanings.
- Customizable intents (sets of questions & answers). An answer can be a text message, a console command, or both. You can add multiple answers to an intent, and then choose the behavior for that intent. In random mode, Minebot choices a random answer (one message and one command). In sequential mode, Minebot sends all the added answers.
- Comes with prebuilt intents (fun easter eggs).
- Minebot can look for answers on the internet. You can ask the meaning of a word, or a brief explanation of something. Usually, the answers are from Wikipedia (for general knowledge) and WordNet (an English dictionary).
- Minebot can also give quick descriptions of Minecraft items, blocks, entities, effects, and biomes. All this information comes from Minecraft Official Wiki.
- Opped users can ask Minebot to create named teleports anywhere. All users can ask for teleport. It's also possible to ask for the teleport list.
- Minebot supports local chat, and the radius is configurable.
- Chat filter that blocks possibly offensive words and offensive messages. This feature is under heavy development, and comes disabled by default.
- Optional Wolfram|Alpha integration. You can extend Minebot’s functionalities by providing a Wolfram|Alpha API Key for your server.
- You can manage intents with in-game commands, and can also use the companion command-line tool (Minebot CLI) to do it. The major benefit of the Minebot CLI is that unlike the Minecraft chat, it doesn’t have character limits. It means that you can add long commands to Minebot.
- Minebot's native language is English, but it's possible to enable machine translation to support nearly all languages. All features will work as usual, including the chat filter. Please, notice that the messages sent directly by the plugin will still appear in English. I'll fix it soon.
- It's possible to rename Minebot and customize the message format
Installation & First use
1. Download the .jar plugin in the resources and move the file to the "plugins" directory on your server.
2. Run your server. You'll see a message like this:
3. If you are a new user, please create an account by typing the command: mbregister <username> <password> . Returning users can sign in typing mbauth <username> <password> . These commands can be used directly in the console. You can also do it in-game if you are popped. Permission plugins are not yet supported.
It's necessary to create an account because everything you teach Minebot is stored on it's database.
4. Test it to check if everything is working. Join your server and send a message to Minebot. The bot only answers messages that begin with its name.
How to teach new stuff to Minebot
Just like explained before, every possible interaction with Minebot is called intent. To train Minebot with a new intent work, you need at least one example message and one answer or/and a command. The command used to manage the intents is: /mbintent <intent> <add|delete> <answer|command|example>. To make things clear, I'm going to show some possibilities.
Teaching Minebot to say the rules of the server
Training the bot with frequently asked questions is a good idea. Let's suppose a new player joins your server and wants to know what are the rules. Minebot can easily answer this question!
1. Add messages to exemplify what the intent is about. Let's add messages like "what are the rules?" Type the command:
2. Now we have to add the answer. To keep it simple, let's make Minebot answer with: "The rules are simple, !player. Don't steal anything from other players, be nice and have fun!"Code (Text):/mbinteraction rules add example what are the rules?
/mbinteraction rules add tell me the rules
/mbinteraction rules add example minebot what are the rules in this server?
3. Test to see if it worked
- Notice that !player is a placeholder for the player's name. There's also placeholders for dimension and coordinates: !x, !y, !z, !dim
- The second parameter of /mbinteraction is the name of the intent. You'll can choose any name for your intents, but it's important to use a descriptive word to keep everything organized. The name of the intent is used to modify it.
- Try to provide at least two or three considerably distinct examples to all intents.
Interactions with random answers
Let's suppose you want random answers for an intent. It's really easy to do it: simply add multiple answers to it. Let's modify our "rules" intent adding another answer to see what happens.
Code (Text):/mbinteraction rules add answer Don't steal anything, be nice and have fun!
There's a few pre-built intents with random answers, like this one:
By default, Minebot will choose a random answer and a random command. It's also possible to make it send multiple messages and/or commands at once by changing a configuration. The command is /mbconfig mode <intent> <random|sequential>. Everything is configurable with this command
Making Minebot run console commands
In this example, we are going to teach Minebot to give a starter kit to the player. The intent is going to be called "kit"
1. Add example messages
2. Add the following commands to the intentCode (Text):/mbinteraction kit add example give me a starter kit
3. Add an answer:Code (Text):/mbinteraction kit add command give !player stone_sword
/mbinteraction kit add command give !player stone_axe
/mbinteraction kit add command give !player stone_pickaxe
/mbinteraction kit add command give !player leather_helmet
/mbinteraction kit add command give !player leather_leggings
/mbinteraction kit add command give !player leather_boots
/mbinteraction kit add command give !player leather_chestplate
/mbinteraction kit add command give !player cooked_beef 32
4. Change the intent mode to "sequential". This mode makes Minebot send all the messages and run all the commands in sequence, in the same order you ran the "add" commands.Code (Text):/mbinteraction kit add answer Have fun!
Code (Text):/mbconfig mode kit sequential
I created the TP Manager feature as an extra feature for my own server, but I made it available for everyone.
To create a TP in your current in game location, send a message similar to: "minebot, create the tp <name>"
To go to the saved location, send a message like: "minebot, teleport me to <location>". To see all the saved TPs, say: "minebot, show the TP list". If you ever want to delete a created TP, say: "minebot, delete the tp <name>".
This is a cool feature to use if you run a whitelisted server to play with your friends
Observation: Only opped users can create and delete TPs.
You can configure all the parameters through the command /mbconfig. Those are all the parameters you can change:
Non-English languages supportCode (Text):mode <intent> <random|sequential>
chatradius <value> **only works with local chat enabled
threshold <value> **only works with chat filter
punishment <mute|kick> **only works with chat filter
muteTime <seconds> ** only works with chat filter
autoClearChat <true|false> ** only works with chat filter
wolframalpha <api key>
name <new bot name>
language <language name>
Minebot's native language is English, but it uses machine translation to understand and speak nearly all languages. Here is the list containing all the supported languages:
Chat filterCode (Text):afrikaans
The chat filter comes disabled by default. To enable it, type the command /mbconfig chatfilter true. This filter is based on a fast string-searching algorithm that looks for naughty words, then a machine learning model analyzes the message to understand the context. The model estimates the probability of the message being seen as offensive by a strict human moderator. This estimative is a probabilistic value between 0% and 100%, and the default threshold to trigger a punishment is 75%. You can adjust this with the parameter threshold.
When Minebot detects an offensive message, it mutes the player for 30 seconds as punishment. Unfortunately, it’s not possible to block the message, because the web service needs a few milliseconds to answer the requests. The response comes quickly, but blocking the chat for a few milliseconds every time someone says something will cause severe lag on your server. That’s why I prefer this approach: it won't impact your server by any means
You can adjust the mute time by changing the parameter muteTime. It's also possible to make Minebot clear the chat if you change autoClearChat to true. It's also possible to change punishment to kick if you prefer to kick the player, instead of muting.
The filter is currently under heavy research & development and might not work perfectly all the time, and right now it can't totally replace human moderators.
Local chat support
If you use some kind of local chat plugin, you can easily enable the support to this feature changing localchat to true. When enabled, only players who are close to the user who spoke to Minebot will receive its answers. You can adjust the chatradius parameter to determine the radius of the local chat.
You can rename Minebot changing the parameter "name". The name you chose will be used everywhere. I suggest you use short and easy names, or else your players will possibly avoid talking to the bot.
Customizing message format
It's very probable that your server uses a plugin that changes the chat format. Since version 1.2.0, it's possible to customize Minebot's chat format by changing the parameter chatFormat. There are basically two placeholders: %name% (the bot's name) and %message%. You can use Bukkit color codes to further personalize the messages. You can see all the available colors here: https://www.planetminecraft.com/blog/bukkit-color-codes-4868870/
Sending private messages
As noted by a user in my Discord community, the bot can produce a lot of spam depending on what you ask him, and how many players are talking to him. To address this issue, I added a parameter called privateMessage, which makes the bot answer all the messages in private if defined to true. There's also a command called /botpm, to send a private message to Minebot. The command works no matter what the state of privateMessage is.
All the conversations with Minebot are stored in a SQLite Database, called "minebotlogs.db" located in your server root directory. The database contains two tables: "response_logs" and "moderation_logs". As the names suggest, "response_logs" stores all the interactions with Minebot, and "moderation_logs" stores all the punishments made by Minebot. You can open the database and see the data using tools like DB Browser, which you can get here for free: https://sqlitebrowser.org/
It's possible to SQL queries to find some interesting data, like how many times a specific player was punished, what questions Minebot fails to answer, and more.
WolframAlpha is a computational knowledge engine capable of answering almost anything. You can extend Minebot's capabilities if you provide a WolframAlpha API Key, which will be used only in Minecraft servers associated with your account. You can request a key here. Notice that this is a paid service; they offer 2k free requests for free per month, which should be enough if don't use it too much. The config parameter to set a WolframAlpha key is wolframalpha
There's a character limit for in-game commands, so I felt that it wouldn't be nice if the only way to manage the intents was by using in-game commands, and the server console can get messy pretty easily. So I developed Minebot CLI to mitigate this issue.
The usage of Minebot CLI is completely optional, you don't have to download it if you don't want to.
Download Minebot CLI Here:
Windows only version (.exe)
Universal version (.jar, for Windows, Mac, Linux)
Run the .jar version with the following command:
Code (Text):java -jar minebot-cli v1.0.0.jar
Minebot has a few intents available for all servers that use the plugin. I’ll add more intents overtime to make Minebot more entertaining to you and your players. For now, you can try:
The web search feature (described above) is also enabled for everyone.
- Tell me a joke!
- Flip a coin
- What does the fox say?
- What is the meaning of life?
- I love you
- Is the cake a lie?
- What are you wearing?
- Am I a joke to you?
1) Sometimes the bot will temporarily stop working. As explained before, everything is based on a web backend. Sometimes I have to restart my virtual machine to update the operating system updates, upgrade the hardware specs, or even shut down the backend when it malfunctions. The downtime may last from 30 minutes to 1 hour. Downtime is very rare, but it might happen one or two times per month.
2) The bot will avoid learning offensive stuff, but if you try to circumvent the filter, your account will eventually be blocked by the algorithm, since it gets better every time. You'll be allowed to create another account, but you will permanently lose everything you stored in the previous one.
3) Some features will possibly conflict with other chat plugins. Unfortunately, it's impossible to make Minebot work with plugins that drastically change the default behavior of the chat. Also, for now, my priority is to implement other highly challenging features that I'll eventually announce on my Discord.
4) The update cycles are slow because I'm the only developer working on this project, and I use my free time to do it. Also, I only release new updates when I feel they are stable. After all, I don't want my plugging causing issues for anyone
Since this plugin is totally dependent on a web backend, you may be wondering how's the privacy of this backend. The answer is: I don't store any message sent to Minebot and there are literally no logs at all on my end. The plugin communicates with the backend with a secure connection via HTTPS, as it should.
Minebot is a personal project, and I don’t want to make a profit with it. I will never put purchasable features in it. But, to keep this plugin alive in the long term, I will need your support. Like I mentioned above, all the processing happens on cloud infrastructure (DigitalOcean) and I have to pay for it every month. Right now it is cheap, but If the user base grows too much, I must hire better and better virtual machines, and the price will grow to where I won’t be able to pay for it, and I will have to end Minebot. If you think Minebot makes a difference (like I intended it to do) in your server, please consider donating to keep this project alive. I still have a lot of cool stuff and improvements planned!
Please, consider joining my Discord server. You can use my Discord to share the cool stuff you are doing with Minebot, to ask for help, and to report bugs. I'll also use Discord to make announcements.
Thank you for reading!
Minebot: AI based Chatbot & Chat Moderator 1.2.2
A fully customizable chatbot & chat moderator for your server