Skip to content

Repository files navigation

Gemini_Generated_Image_s1mnq6s1mnq6s1mn

MultiBot Chatless

Bridge-first client addon for AzerothCore mod-playerbots

MultiBot-Chatless is the client-side World of Warcraft 3.3.5a addon for controlling and inspecting Playerbots through a cleaner, mostly chatless UI workflow.


Repository Bridge Module WoW Version Architecture



Component Repository Install Location
Client Addon MultiBot-Chatless World of Warcraft/Interface/AddOns/MultiBot
Server Bridge Module mod-multibot-bridge azerothcore/modules/mod-multibot-bridge

Important Notice

MultiBot-Chatless is the addon-side repository only.

To get the new bridge-first / mostly chatless behavior, you also need the server-side AzerothCore module:

Without the bridge module, the addon cannot use the new structured MBOT GET~... data flow.


What is MultiBot Chatless?

MultiBot is a user interface addon for the AzerothCore mod-playerbots module.

This fork focuses on removing automatic bot chat spam from the main UI refresh paths by using a dedicated AzerothCore bridge module instead of relying on legacy chat parsing.

The addon now requests structured data from the server through mod-multibot-bridge.

Examples of bridge request families (arguments omitted here for readability):

MBOT HELLO
MBOT PING
GET~ROSTER
GET~STATES
GET~WEAPON_ENCHANT
GET~DETAILS
GET~STATS
GET~PVP_STATS
GET~TALENT_SPEC_LIST
GET~INVENTORY
GET~BANK
GET~GBANK
GET~SPELLBOOK
GET~BOT_SKILLS
GET~BOT_REPUTATIONS
GET~BOT_EMBLEMS
GET~PROFESSION_RECIPES
GET~ENCHANT_TRADE
GET~GLYPHS
GET~OUTFITS
GET~QUESTS
GET~GAMEOBJECTS
GET~FORMATIONS
RUN~CRAFT_RECIPE
RUN~ITEM_ACTION
RUN~OUTFIT
RUN~RTI
RUN~COMBAT
RUN~POSITION
RUN~LOOT
RUN~STRATEGY
RUN~FORMATION
RUN~GROUP_ROLL
RUN~ENCHANT_TRADE

The Formation family uses the following complete party/raid-wide contracts:

RUN~FORMATION~GROUP~~<token>~<formation>
FORMATION_ACK~GROUP~~<token>~<success>~<failure>~<formation>

GET~FORMATIONS~GROUP~~<token>
FORMATIONS_BEGIN~<token>~<count>
FORMATIONS_ITEM~<token>~<botName>~<formation>
FORMATIONS_END~<token>~<sentCount>

GROUP covers every controllable bot in the player's current party or raid. It does not target individual raid subgroups.

Current state and strategy capabilities

The addon and bridge negotiate dedicated capabilities so newer write/read paths are used only when both sides support them:

STATE_FRAMING_V1
STRATEGY_MUTATION_V1
OUTFIT_V1
INVENTORY_V1
INVENTORY_BULK_SELL_V1
INVENTORY_OPEN_V1
GROUP_ROLL_V1
ENCHANT_TRADE_V1

STATE_FRAMING_V1 uses tokenized STATE / STATES transactions with framed responses, bounded payloads, cleanup on terminal errors/timeouts, and stale-response protection. Per-bot requests use a 5-second timeout; global state requests use a 15-second timeout.

STRATEGY_MUTATION_V1 provides structured co/nc mutations through RUN~STRATEGY and completion through STRATEGY_ACK. The bridge reports matched, succeeded and failed bot counts, while the addon applies explicit timeout and rejection diagnostics.

INVENTORY_V1 provides native inventory read/refresh. INVENTORY_BULK_SELL_V1 and INVENTORY_OPEN_V1 gate the current bulk-sell and OPEN_ITEMS bridge paths. GROUP_ROLL_V1 gates the group Roll workflow; normal rolls and item-linked rolls are tokenized and completed through a structured GROUP_ROLL_ACK. ENCHANT_TRADE_V1 gates the Enchanting Trade Service: the addon lists only known Enchanting spells exposed by the bot, uses the native WoW Trade window and the non-traded item slot, then requests one validated numeric spell ID through the bridge.

The migration is intentionally incremental. The Warlock stone, soulstone, pet and curse selectors are now migrated to structured RUN~STRATEGY mutations. When those selectors use the bridge, the addon waits for authoritative server STATE data before committing the selected UI state instead of applying an optimistic local state. Other specialized legacy UI paths still issue Playerbots chat commands directly and must be migrated before the addon can be described as fully chatless.

Manual playerbot commands are still intentionally preserved for diagnostics and gameplay actions.

Commands such as:

who
co ?
nc ?
ss ?

still work when the player explicitly wants to inspect a bot state.

The goal is not to remove useful manual commands.
The goal is to remove automatic UI-refresh spam.

The remaining legacy Playerbots Trade inventory dump is also suppressed locally by the addon. The filter recognizes the exact === Inventory === dump from known bots and hides that automatic dump for Inventory -> Trade, Enchanting -> Trade and the native WoW client Trade action, while leaving the Trade workflow itself unchanged.

Warlock weapon-enchant diagnostic

For targeted runtime diagnostics, the addon exposes:

/mbdebug enchant [bot]

If the bot name is omitted, the current target is used. The command sends a single GET~WEAPON_ENCHANT request and displays the structured WEAPON_ENCHANT response with main-hand/off-hand item entries, temporary enchant IDs and remaining durations. This path is diagnostic only: it is on-demand, server-authorized and rate-limited, and is not used for polling or normal selector state synchronization.

The endpoint and safe Firestone/Spellstone switching code are present, but the project-level final revalidation of the real TEMP_ENCHANTMENT_SLOT behavior is intentionally deferred until the end of the normal roadmap.


Features

Area Status
Bridge handshake ImplementedHELLO, HELLO_ACK, PING, PONG
Roster refresh Bridge-first
Bot states Bridge-first, framedSTATE_FRAMING_V1, tokenized STATE/STATES transactions, bounded payloads, timeout cleanup and stale-response protection
Strategy mutations Bridge-first where migratedSTRATEGY_MUTATION_V1, RUN~STRATEGY, STRATEGY_ACK and explicit rejection/timeout diagnostics
Warlock strategy selectors Bridge-first and runtime validated — Stones, Soulstones, Pets and Curses use structured strategy mutations; bridge-backed selections wait for authoritative state, invalid Warlock dps/dps debuff controls and the disabled Buff placeholder were removed, and the selector layout was compacted
Bot details Bridge-first
Stats Bridge-first
PvP stats Bridge-first
Talent spec lists Bridge-first template listing without automatic talents spec list chat spam
Inventory Bridge-first native read/refresh through INVENTORY_V1, with icons and item tooltips
Inventory bulk sell Bridge-first when supportedINVENTORY_BULK_SELL_V1 routes SELL_VENDOR and the existing SELL_GREY action through the bridge; legacy per-item fallback remains a compatibility path, and further SELL_GREY work is deferred
Open items Bridge-first and validatedINVENTORY_OPEN_V1 / OPEN_ITEMS with structured result handling and no silent chat fallback in normal bridge-first use
Group Roll Bridge-first and runtime validatedGROUP_ROLL_V1 supports normal 0–100 rolls and Shift+click item rolls with tokenized pending state, duplicate-send protection and structured ACK handling
Spellbook Bridge-first combat spell listing separated from profession recipe data
Character Info frame Bridge-first Blizzard-style tabs for skills, reputations and currencies/emblems
Bot bank / guild bank / vendor buy Bridge-first bank snapshots, guild bank snapshots, bank deposit/withdraw, guild bank deposit/withdraw and vendor buy actions
Profession recipe frame Bridge-first recipe listing and recipe crafting opened from Character Info profession and secondary skill rows
Enchanting Trade Service Bridge-first and runtime validatedENCHANT_TRADE_V1 exposes known Enchanting services, reagent/tool availability and native Trade-slot execution without a generic cast/chat executor; the same dedicated window is available from the enchanter EveryBar and Character Info, with UI text localized in all eight runtime locales
Trade inventory chat suppression Runtime validated — the legacy Playerbots === Inventory === Trade-start dump is hidden for Inventory, Enchanting and native client Trade openings; the filter is limited to the exact dump sequence from known bots and does not modify Playerbots or the Bridge
Glyphs Bridge-first with glyph icons and tooltips
Loot rules Bridge-first loot enable/disable and loot list profiles through RUN~LOOT
Loot Master frame Implemented optional auto-opening master-loot UI with candidate scoring, preferences and recent loot history
Units / EveryBars Improved login, reload and AddClass refresh behavior
Random bot visibility Improved bridge-visible grouped randombots alongside AddClass bots and altbots
Party / raid formation controls Bridge-first and chatless — left-click applies one formation to every controllable bot in the current party or raid through RUN~FORMATION; right-click reads each bot's effective formation through GET~FORMATIONS and displays a localized tooltip
Legacy automatic chat fallback Disabled by default
Outfits Bridge-first listing, create/update, reset, equip and replace
Quests Bridge-first incompleted, completed and all quest lists with dark result frames and per-bot abandon buttons
Game object search Bridge-first results and copy frame without localized chat parsing
RTI controls Bridge-first icon assignment and RTI target actions
Pull Control Bridge-first wait, focus, DPS assist, AoE and RTI pull/attack controls
Combat strategy fine tuning Bridge-first avoid AoE, save mana, threat and behind controls
Disperse controls Bridge-first distance set and disable actions through RUN~POSITION
Loot rules Bridge-first loot enable/disable and loot list profiles through RUN~LOOT
Loot Master frame Implemented optional auto-opening master-loot UI with candidate scoring, preferences and recent loot history
Units / EveryBars Improved login, reload and AddClass refresh behavior
Random bot visibility Improved bridge-visible grouped randombots alongside AddClass bots and altbots
Legacy automatic chat fallback Disabled by default

Requirements

Client

  • World of Warcraft 3.3.5a / Wrath of the Lich King client.
  • Tested with:
    • English / US client
    • German client
    • French client
    • Spanish client
  • Localization files included for enUS, enGB, frFR, esES, deDE, ruRU, zhCN and koKR.

Server


Installation

1. Install the server-side bridge module

Clone the bridge module inside your AzerothCore modules directory:

cd /path/to/azerothcore/modules
git clone https://github.com/Wishmaster117/mod-multibot-bridge.git mod-multibot-bridge

Expected structure:

azerothcore/
└── modules/
    └── mod-multibot-bridge/
        ├── conf/
        └── src/

Then:

  1. Re-run CMake if required by your build workflow.
  2. Rebuild AzerothCore.
  3. Copy/install the generated configuration file if required.
  4. Start the server.
  5. Check that mod-multibot-bridge is loaded.

When the addon connects successfully, the server console should show messages similar to:

MBOT HELLO
MBOT HELLO_ACK
MBOT PING
MBOT PONG
GET~ROSTER
GET~STATES
GET~DETAILS

2. Install the client addon

Clone this repository into your World of Warcraft AddOns directory.

cd "World of Warcraft/Interface/AddOns"
git clone https://github.com/Wishmaster117/MultiBot-Chatless.git MultiBot

Expected structure:

World of Warcraft/
└── Interface/
    └── AddOns/
        └── MultiBot/
            ├── MultiBot.toc
            ├── Core/
            ├── Data/
            ├── Features/
            ├── Icons/
            ├── Libs/
            ├── Locales/
            ├── Strategies/
            ├── Textures/
            └── UI/

The GitHub repository is named MultiBot-Chatless, but the local addon folder must be named MultiBot.

Do not install it like this:

Interface/AddOns/MultiBot/MultiBot/MultiBot.toc

The .toc file must be directly here:

Interface/AddOns/MultiBot/MultiBot.toc

Updating

Update the addon

cd "World of Warcraft/Interface/AddOns/MultiBot"
git pull

Update the bridge module

cd /path/to/azerothcore/modules/mod-multibot-bridge
git pull

Then rebuild your AzerothCore server if the module code changed.


Recommended Configuration

For normal bridge-first usage, keep legacy automatic chat fallback disabled:

MultiBot.allowLegacyChatFallback = false

Only enable it temporarily for debugging or compatibility testing:

MultiBot.allowLegacyChatFallback = true

Usage

Start World of Warcraft and use one of the following commands:

/multibot
/mbot
/mb

You can also use the minimap button.

When the bridge is available, the addon automatically uses structured bridge messages for the main UI refresh paths instead of legacy chat replies.

Manual commands are still available when you intentionally want them.

Examples:

/w BotName who
/w BotName co ?
/w BotName nc ?
/w BotName ss ?

Bridge-First Architecture

Old behavior New behavior
Addon triggers bot commands Addon sends structured MBOT GET~... requests
Bots answer with chat text Bridge returns structured addon messages
Addon parses localized chat lines Addon consumes stable protocol payloads
Automatic UI refresh creates chat spam Main UI refresh paths are mostly chatless

Current Status

Implemented bridge-first / chatless areas:

  • Bridge handshake: HELLO, HELLO_ACK, PING, PONG.
  • Roster refresh.
  • Bot states through STATE_FRAMING_V1, with tokenized per-bot/global transactions, framed responses, bounded state payloads, timeout cleanup and stale-response protection.
  • Strategy mutations through STRATEGY_MUTATION_V1 for migrated controls, with RUN~STRATEGY, STRATEGY_ACK, result counters and explicit rejection/timeout diagnostics.
  • Bot details refresh.
  • Stats refresh.
  • PvP stats refresh.
  • Talent spec list refresh.
  • Inventory read/refresh through INVENTORY_V1, with icons and item tooltips.
  • Bulk inventory sell through INVENTORY_BULK_SELL_V1 when supported; SELL_VENDOR is bridge-first in normal current operation, while legacy compatibility fallback remains available and SELL_GREY follow-up is deferred.
  • OPEN_ITEMS through INVENTORY_OPEN_V1, with structured result handling and no silent chat fallback in the normal bridge-first path.
  • Group Roll through GROUP_ROLL_V1: normal 0–100 roll and Shift+click item roll, tokenized pending state, duplicate-send protection, timeout/cleanup handling and structured GROUP_ROLL_ACK.
  • Spellbook refresh, with profession/crafting spells separated from the combat spellbook path.
  • Character Info frame through the bridge with Blizzard-style tabs for class, profession, secondary, weapon and armor skills, reputations and currencies/emblems.
  • Bot bank and guild bank snapshots through the bridge, plus bank deposit/withdraw, guild bank deposit/withdraw and vendor buy item actions.
  • Profession recipe frame through the bridge, opened from profession and secondary skill rows.
  • Enchanting Trade Service through ENCHANT_TRADE_V1: dedicated enchanter-only UI from EveryBar/Character Info, known-spell listing, reagent/tool availability, native TRADE_SLOT_NONTRADED targeting and validated numeric spell execution without generic Playerbots command/chat dispatch.
  • Glyph refresh with icons and glyph tooltips.
  • Outfits refresh and actions through the bridge.
  • Outfit equip/replace without detailed Equipping [item] ... chat spam.
  • Quest list refresh through the bridge.
  • Game object search results and copy frame through the bridge.
  • RTI controls through the bridge.
  • Pull Control frame through the bridge.
  • Combat strategy fine tuning through the bridge.
  • Disperse controls through the bridge with disperse set <yards> and disperse disable.
  • Party/raid-wide formation application through RUN~FORMATION, with per-bot effective formation inspection through GET~FORMATIONS and no PARTY/RAID chat output.
  • Localized formation status tooltip for all eight addon locale files.
  • Loot rules through the bridge with nc +loot, nc -loot and ll all|normal|gray|quest|skill.
  • Loot Master UI for master-loot distribution with item tooltips, candidate scoring, profession/spec hints, saved preferences and recent loot history.
  • Bridge-visible bot discovery for AddClass bots, altbots and grouped randombots.
  • Custom glyph socket mapping and apply order.
  • Talent tab navigation stability after switching between tabs.
  • Automatic bot reconnect on login/reload for bots already present in the group or raid.
  • Units bar refresh after adding a bot through AddClass.

Validated development milestones on the current line:

  • PR #49 — bridge synchronization, strategy controls, persistent/offline favorites and STATE stabilization.
  • PR #50 — explicit strategy-command rejection diagnostics.
  • PR #51 — mechanical deduplication of shared roster workflow helpers.
  • PR #53 — prevent silent chat fallback for strategy mutations.
  • PR #54 — outfit actions migrated to the negotiated bridge capability.
  • PR #55 — strict bridge routing for inventory read/refresh.
  • PR #58 — single-bot inventory Sell Vendor migrated to the bridge.
  • PR #60 — bridge-first OPEN_ITEMS.
  • PR #61 — chatless Group Roll UI, merged as 106074c3c93f80812f73af27e746860c7c8a4dcf.
  • Final static STATE/strategy audit on 2026-08-07: 57 checks, 0 failures; final manual runtime matrix remains pending.
  • Warlock selector batch is migrated to bridge strategy mutations; final project-level real TEMP_ENCHANT revalidation and the four remaining LuaLint warnings are explicitly deferred.
  • Group Roll runtime validation on 2026-08-14: normal roll, item roll, eligibility, no chat spam, duplicate protection, invalid/empty item rejection and pending cleanup all validated.
  • Enchanting Trade Service runtime validation on 2026-08-14: enchanter-only button, list/search/tooltips, localized 440 px frame, normal WoW Trade flow and real item enchant application all validated with no automatic chat executor.

Known migration remaining:

  • Remaining direct SendChatMessage occurrences outside migrated paths still need to be classified as manual command, diagnostic fallback, information message, UI mechanism to migrate, compatibility fallback, or dead code.
  • Item enchanting is now implemented and runtime validated through the closed ENCHANT_TRADE_V1 Trade Service; it does not expose a generic cast or arbitrary Playerbots command executor.
  • The next normal roadmap item is item-specific loot-rule add/remove, followed by the Quest/Skill versus Disenchant decision and collective follow / attack / stay orders.
  • The project should be described as bridge-first / mostly chatless, not fully chatless, until these remaining paths are classified/migrated and the final runtime matrix is closed.

Kept intentionally:

  • Manual whisper/playerbot commands for diagnostics.
  • Commands such as who, co ?, nc ?, ss ?.
  • Gameplay write actions that still rely on existing playerbot commands.
  • Optional legacy fallback behavior only for debugging or compatibility.

Remaining Work

The current line includes bridge-first inventory refresh, outfits, Sell Vendor, OPEN_ITEMS, Group Roll and the runtime-validated Enchanting Trade Service in addition to the previously migrated UI areas. The roadmap is intentionally continuing feature-family by feature-family rather than jumping directly to final cleanup.

Next normal roadmap work:

  1. Audit and implement item-specific loot-rule add/remove using verified Playerbots interfaces only.
  2. Decide the Quest/Skill versus Disenchant path from verified Playerbots capabilities.
  3. Audit collective follow, attack and stay selectors before any structured group-order migration.

Explicitly deferred until the normal roadmap is complete:

  • SELL_GREY / sell-grey core API / bridge-first follow-up.
  • Final real Firestone/Spellstone TEMP_ENCHANTMENT_SLOT revalidation.
  • Four remaining LuaLint warnings in Strategies/MultiBotWarlock.lua.
  • Other small items that were explicitly deferred during previous validated batches.

Ongoing finalization work remains unchanged: regression testing, classification of residual SendChatMessage paths, removal of dead legacy parsers only after proof of non-regression, and documentation/screenshot cleanup after wider testing.


Troubleshooting

The addon does not load

Check that the folder is named exactly:

Interface/AddOns/MultiBot

and that the .toc file is here:

Interface/AddOns/MultiBot/MultiBot.toc

If the .toc file is inside another nested MultiBot folder, the addon is installed incorrectly.

The addon loads but the bridge does not connect

Check that:

  • mod-multibot-bridge is installed in the AzerothCore modules directory.
  • AzerothCore was rebuilt after installing the module.
  • The server was restarted after rebuilding.
  • The bridge module is visible in server logs.
  • Your client is logged into a character connected to the server.
I still see some chat messages

This project removes automatic UI-refresh spam where the bridge path has been implemented.

Manual commands and gameplay actions may still produce intentional messages.

Make sure this value is disabled unless you are debugging:

MultiBot.allowLegacyChatFallback = false
The formation tooltip does not appear or is incomplete

Check that the bridge is connected and that the bots are controllable members of the same party or raid as the player.

A right-click on the Formation button should produce structured bridge traffic similar to:

GET~FORMATIONS~GROUP~~<token>
FORMATIONS_BEGIN~<token>~<count>
FORMATIONS_ITEM~<token>~<botName>~<formation>
FORMATIONS_END~<token>~<sentCount>

The query is raid-wide: it includes all controllable bots in the current party or raid and does not target individual raid subgroups.

Inventory, spellbook, glyphs or outfits do not update

Check the server console for bridge requests such as:

GET~INVENTORY
GET~BANK
GET~GBANK
GET~SPELLBOOK
GET~GLYPHS
GET~OUTFITS
GET~BOT_SKILLS
GET~BOT_REPUTATIONS
GET~BOT_EMBLEMS
GET~PROFESSION_RECIPES
GET~QUESTS
GET~GAMEOBJECTS

If these requests do not appear, the addon may not be connected to the bridge.

The Loot Master frame does not open

Check that:

  • The Loot Master UI option is enabled in the addon options.
  • The group loot method is set to Master Loot.
  • Your character is the detected master looter.
  • The opened loot contains relevant loot slots.

The frame uses the client master-loot candidate API and enriches candidates with cached bridge details when available.

The Loot Master frame does not open

Check that:

  • The Loot Master UI option is enabled in the addon options.
  • The group loot method is set to Master Loot.
  • Your character is the detected master looter.
  • The opened loot contains relevant loot slots.

The frame uses the client master-loot candidate API and enriches candidates with cached bridge details when available.


Project Documentation

The active project documentation is intentionally limited to two files:


Repository Layout

MultiBot-Chatless/
├── Core/
├── Data/
├── Features/
├── Icons/
├── Libs/
├── Locales/
├── Strategies/
├── Textures/
├── UI/
├── docs/
│   ├── DEBUG_RUNBOOK.md
│   └── ROADMAP.md
└── MultiBot.toc

Related Repositories

Repository Description
MultiBot-Chatless Client-side World of Warcraft addon.
mod-multibot-bridge AzerothCore server-side bridge module.
MultiBot-Standalone Deprecated combined repository kept for history.
mod-playerbots Original AzerothCore Playerbots module.

Credits

MultiBot is built for use with AzerothCore mod-playerbots.

Thanks to Macx-Lio for the original MultiBot Module.

Thanks to the Playerbots team and the AzerothCore community.


MultiBot Chatless

Less automatic chat spam. Cleaner UI refreshes. Bridge-first bot data.



Client Addon  •  Bridge Module

About

User interface for AzerothCore-Module "Playerbot".

Resources

Stars

41 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages