Minebot: AI based Chatbot & Chat Moderator 1.2.2

A fully customizable chatbot & chat moderator for your server

  1. Candy_Addiction
    Native Minecraft Version:
    1.16
    Tested Minecraft Versions:
    • 1.16
    Introduction

    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:
    pasted image 0.png


    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.


    Feature Overview

    • 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

    Tutorials
    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:
    upload_2021-2-18_14-7-10.png
    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.
    upload_2021-2-18_18-33-25.png

    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:
    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?
    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!"
    3. Test to see if it worked
    upload_2021-2-18_23-29-51.png

    Hints:
    - 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!
    upload_2021-2-18_23-45-20.png

    There's a few pre-built intents with random answers, like this one:
    upload_2021-2-18_23-46-59.png

    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
    Code (Text):
    /mbinteraction kit add example give me a starter kit
    2. Add the following commands to the intent

    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
     
    3. Add an answer:
    Code (Text):
    /mbinteraction kit add answer Have fun!
    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):
    /mbconfig mode kit sequential
    upload_2021-2-19_1-28-4.png

    TP management

    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.


    Configuring Minebot

    You can configure all the parameters through the command /mbconfig. Those are all the parameters you can change:

    Code (Text):
    mode <intent> <random|sequential>
    chatfilter <true|false>
    localchat <true|false>
    chatradius <value>    **only works with local chat enabled
    chatfilter <true|false>
    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>
    privateMessage <true|false>
    chatFormat <format>
    Non-English languages support
    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:
    Code (Text):
    afrikaans
    albanian
    amharic
    arabic
    armenian
    azerbaijani
    basque
    belarusian
    bengali
    bosnian
    bulgarian
    catalan
    cebuano
    chichewa
    chinese_simplified
    chinese_traditional
    corsican
    croatian
    czech
    danish
    dutch
    english
    esperanto
    estonian
    filipino
    finnish
    french
    frisian
    galician
    georgian
    german
    greek
    gujarati
    haitian_creole
    hausa
    hawaiian
    hebrew
    hindi
    hmong
    hungarian
    icelandic
    igbo
    indonesian
    irish
    italian
    japanese
    javanese
    kannada
    kazakh
    khmer
    korean
    kurdish_kurmanji
    kyrgyz
    lao
    latin
    latvian
    lithuanian
    luxembourgish
    macedonian
    malagasy
    malay
    malayalam
    maltese
    maori
    marathi
    mongolian
    myanmar_burmese
    nepali
    norwegian
    pashto
    persian
    polish
    portuguese
    punjabi
    romanian
    russian
    samoan
    scots_gaelic
    serbian
    sesotho
    shona
    sindhi
    sinhala
    slovak
    slovenian
    somali
    spanish
    sundanese
    swahili
    swedish
    tajik
    tamil
    telugu
    thai
    turkish
    ukrainian
    urdu
    uzbek
    vietnamese
    welsh
    xhosa
    yiddish
    yoruba
    zulu
    Filipino
    Hebrew
    Chat filter

    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.

    Renaming Minebot

    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.

    Logs

    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.

    Wolfram|Alpha integration

    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

    Minebot CLI

    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.

    upload_2021-2-19_2-40-34.png

    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


    Global intents

    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:
    • 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?
    The web search feature (described above) is also enabled for everyone.

    Warnings

    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 :p

    Privacy

    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.

    Support Minebot

    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!

    My PayPal



    Discord server

    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.

    Invitation URL

    Thank you for reading!

Recent Reviews

  1. ProjectFab
    ProjectFab
    5/5,
    Version: 1.2.2
    Works good, but i need you to update this. Make this worth like 25$ or something please? i want you to be motivated!
  2. Bossbirdyman51
    Bossbirdyman51
    5/5,
    Version: 1.2.1
    I like this idea, i want to test it but i am using Paper 351 and i can't run it i have error with It's Up to date ?
    But this plugin have very good features great job ^^
    1. Candy_Addiction
      Author's Response
      Hello! I'm sorry you experienced this issue. Can you please join my Discord Server? I'll gladly look into solving this issue
  3. _Chivitos100_
    _Chivitos100_
    5/5,
    Version: 1.2.0
    Underrated.
    ..................................
    ..................................
    1. Candy_Addiction
      Author's Response
      Thank you for reviewing my resource! I'm glad you liked it
  4. PhoenixHaven
    PhoenixHaven
    5/5,
    Version: 1.0.0
    I havent tested the plugin yet but it looks to be something that would 100% help people just starting out with making servers and want something simple to help them. One thing I did notice on the page is that you managed to leak your token (yes ik it's a test acc) but it says not to give your token to anyone yet you gave it to the entirety of Spigot.
    1. Candy_Addiction
      Author's Response
      Thank you for reviewing my plugin. I agree with you! Minebot is a good option to help new servers, and I believe it is also capable of assisting existing ones. It may be worth it to teach Minebot to answer the most frequent questions (like the server rules, who are the staff members...), not to mention that sometimes the chat goes humanly impossible to moderate. Regarding the token, thank you for reminding me of it! I intended to show how a token looks like, but totally forgot to delete the test user