Brazil's biggest MU Online portal — since 2003
Tutorial Intermediate Web

How to integrate a support chatbot into your MU Online server's site

Deploy a support chatbot on your MU Online server's site and Discord, with its own knowledge base, human escalation, and integration with the ticket system.

RO Rodrigo · Updated on Sep 20, 2015 · ⏱ 14 min read
Quick answer

Popular MU Online servers get dozens or hundreds of repeated questions every day: "how do I reset my password," "is the server online?", "when does today's event start," "how does the reset system work." Answering each one manually eats up the support team's time and delays the cases that really nee

Popular MU Online servers get dozens or hundreds of repeated questions every day: "how do I reset my password," "is the server online?", "when does today's event start," "how does the reset system work." Answering each one manually eats up the support team's time and delays the cases that really need human attention, like payment disputes or a compromised account. A well-configured support chatbot resolves most of these questions automatically, both on the site and on Discord, and escalates to a human only when necessary. This tutorial shows how to structure the knowledge base, choose between a rules-based bot or AI, integrate it into the site and Discord, and connect the flow to a ticket system.

Why have a support chatbot

An informal survey of MU Online communities shows that between 50% and 70% of messages in support channels repeat: server status, how to download the client, how system X works, when the next event is. Automating these answers frees up staff for complex cases and reduces the average response time perceived by the player, who often just wants a quick answer, not necessarily a human one.

Choosing the architecture: rules vs. generative AI

CriterionRules/keyword-based botGenerative AI bot (LLM)
CostLow, runs on your own serverCost per token/request via API
Accuracy on server-specific answersHigh, if the knowledge base is well maintainedHigh, if using RAG over your own knowledge base
Ability to understand phrasing variationsLimited, depends on registered synonymsHigh, understands paraphrasing naturally
Risk of "making up" a wrong answerLow (only answers what's mapped)Exists, needs to be mitigated with RAG and a restrictive prompt
Maintenance effortNeeds each question pattern registeredNeeds the knowledge base kept up to date

For most servers, the practical recommendation is to start with rules/keywords (quick to launch, predictable) and evolve to AI with RAG as ticket volume grows and the team has budget.

Building the knowledge base

Before any technical integration, write and organize the content the bot will use:

  • Registration and login FAQ: how to create an account, recover a password, verify email.
  • Client FAQ: how to download, install, common connection issues.
  • Gameplay FAQ: server systems (reset, sockets, wings, events), schedules.
  • Payment FAQ: how to buy Cash Points, crediting timelines, refund policy.
  • Real-time status: server online/offline, connected players, next event.

Structure this content in a JSON file or database tables, with question, associated keywords, and answer — this serves both the rules-based bot and as a RAG base if you evolve to AI later.

Step 1 — Expose a server status endpoint

The chatbot, whatever its architecture, needs real data to answer questions like "is the server online?" Expose your own API, never direct database access:

<?php
// api/status.php
header('Content-Type: application/json');
echo json_encode([
    'online' => verificarPortaGameServer(),
    'jogadores_conectados' => contarConexoesAtivas(),
    'proximo_evento' => buscarProximoEvento(),
]);

Step 2 — Implement the rules-based bot (first version)

function responderPergunta(string $mensagem): string {
    $mensagem = mb_strtolower($mensagem);
    $base = carregarBaseConhecimento(); // array of [keywords, answer]

    foreach ($base as $item) {
        foreach ($item['palavras_chave'] as $chave) {
            if (str_contains($mensagem, $chave)) {
                return $item['resposta'];
            }
        }
    }
    return null; // no match, escalate to a human
}

Step 3 — Chat widget on the site

Add a floating widget in the site's footer that sends the player's message to the bot's endpoint and shows the response. It can be a custom component or a third-party tool (Tawk.to, Crisp, Tidio) with a custom webhook pointing to your response logic.

<div id="mu-chatbot-widget">
  <input type="text" id="pergunta" placeholder="How can I help?">
  <button onclick="enviarPergunta()">Send</button>
</div>
async function enviarPergunta() {
  const pergunta = document.getElementById('pergunta').value;
  const resposta = await fetch('/api/chatbot', {
    method: 'POST',
    body: JSON.stringify({ pergunta }),
  }).then(r => r.json());
  mostrarResposta(resposta.texto || "I'll connect you with the support team.");
}

Step 4 — Integrate with Discord

On Discord, use a bot (discord.js or discord.py) that listens for messages in a #support channel and answers using the same knowledge base as the site's API — this way you keep a single source of truth:

client.on('messageCreate', async (message) => {
  if (message.channel.name !== 'suporte' || message.author.bot) return;
  const resposta = await consultarBaseConhecimento(message.content);
  if (resposta) {
    message.reply(resposta);
  } else {
    message.reply("I couldn't find an automatic answer. A moderator will help you shortly.");
    await abrirTicket(message.author.id, message.content);
  }
});

Step 5 — Escalating to a human

Every chatbot needs a clear exit for when it doesn't know the answer. Define objective escalation criteria: questions about unconfirmed payments, suspected compromised accounts, reported bugs, or any message with no knowledge base match after 2 attempts.

Step 6 — Connecting to the ticket system

When the bot escalates, it should automatically open a ticket (in your web support system, or a private ticket channel on Discord via a bot like Ticket Tool or your own logic), already filled in with the conversation history — this saves the player from having to repeat everything to the human.

async function abrirTicket(usuarioId, contexto) {
  await criarTicketNoBanco({
    usuario: usuarioId,
    origem: 'chatbot-discord',
    contexto_conversa: contexto,
    status: 'aberto',
  });
}

Evolving to generative AI with RAG

If volume justifies it, evolve the rules-based bot into a language model that searches your knowledge base before answering (Retrieval-Augmented Generation), explicitly restricting the model to answer only based on retrieved content, reducing hallucination. This improves comprehension of naturally worded question variations, while keeping the answer anchored to your server's actual content.

Metrics to track

Measure the automatic resolution rate (questions answered without escalation), the average time to first response, and post-support satisfaction (a simple "did this help? yes/no" is enough). Review monthly which questions escalated the most without a match — they point to gaps in the knowledge base.

Common errors and fixes

SymptomLikely causeFix
Bot answers incorrectly or "makes things up"Generative AI without restriction to your own knowledge baseImplement RAG and restrict the prompt to answer only from retrieved content
Player repeats the question several times without successKnowledge base with too few keyword variationsExpand synonyms and phrases associated with each answer
Ticket opened without conversation contextEscalation doesn't send the historyAttach the conversation history when creating the ticket
Bot freezes or doesn't respondStatus/backend API is downMonitor and have a generic fallback message for when the API fails
Outdated info (wrong event, wrong price)Knowledge base isn't reviewed regularlyAssign an owner and a weekly/monthly review routine
Players complain about "talking to a robot"No clear, fast escalation to a humanReduce attempts before escalating and make the option visible

Chatbot launch checklist

  • Knowledge base structured and reviewed (registration, client, gameplay, payment).
  • Server status endpoint exposed securely (read-only).
  • Bot working on the site (widget) and tested with real questions.
  • Bot integrated with Discord, using the same knowledge base.
  • Human escalation criteria defined and implemented.
  • Integration with the ticket system sending conversation context.
  • Automatic resolution and satisfaction metrics being collected.
  • Periodic knowledge base review routine scheduled.

With automated support reducing the volume of repetitive tickets, it's also worth reviewing your community's communication as a whole — from Discord to the forum — so information stays consistent across every channel. See the MU Online server setup guide to review the project's complete foundation.

Frequently asked questions

Does a chatbot replace the server's support team?

Not entirely. It resolves between 40% and 70% of repetitive tickets (like resetting a password, questions about an event, server status), but cases involving a compromised account, an item bug, or a payment dispute always need a human. The goal is to reduce volume, not eliminate the team.

Do I need a paid AI service to build the chatbot?

Not necessarily. You can start with a rules/keyword-based bot (free, hosted on your own server) and later evolve to a language model via a paid API, if ticket volume justifies the cost.

Can the chatbot read real server data, like status or account info?

Yes, as long as you expose that data through your own API that the bot queries (GameServer status, whether an account exists, whether there's an active event). Never give the bot direct write access to the database — read-only, through controlled endpoints.

How do I keep the chatbot from giving wrong information about the game?

Restrict answers to a knowledge base you write and review yourself (FAQ, rules, guides) instead of letting the bot 'make up' free-form answers. AI tools using RAG (searching your own knowledge base before answering) reduce this risk significantly.

Is it worth having a chatbot on both the site AND Discord?

Yes, generally both are worth it, but with different scopes: on the site, the bot focuses on registration, download, and payment questions; on Discord, it focuses on gameplay questions and ticket triage before opening a channel with staff.

RO
Founder & editor-in-chief

Rodrigo has run ViciadosMU since the portal's early days. A specialist in MU Online server creation and administration, game history and the evolution of the seasons — he wrote much of the archive before 2024.

Keep reading

Related articles