wowpedia
Main Menu


Sends a message over an addon comm channel.

success = C_ChatInfo.SendAddonMessage(prefix, message [, chatType, target])
        = C_ChatInfo.SendAddonMessageLogged

Arguments

prefix
string - Message prefix, can be used as your addon identifier; at most 16 characters.
message
string - Text to send, at most 255 characters. All characters (decimal ID 1-255) are permissible except NULL (ASCII 0).
chatType
string? = PARTY - The addon channel to send to.
target
string|number? - The player name or custom channel number receiving the message for "WHISPER" or "CHANNEL" chatTypes.

Returns

success
boolean - True if the message was successfully sent. This is regardless of being registered to its prefix or any server-side throttling.

Chat types

chatType Retail Classic Description
"PARTY"
✔️
✔️
Addon message to party members
"RAID"
✔️
✔️
Addon message to raid members. If not in a raid group, the message will instead be sent on the PARTY chat type.
"INSTANCE_CHAT"
✔️
✔️
Addon message to grouped players in instanced content such as dungeons, raids and battlegrounds
"GUILD"
✔️
✔️
Addon message to guild members. Prints a "You are not in a guild." system message if you're not in a guild.
"OFFICER"
✔️
✔️
Addon message to guild officers
"WHISPER"
✔️
✔️
Addon message to a player. Only works for players on the same or any connected realms. Use player name as target argument.
Prints a "No player named '%s' is currently playing." system message if that player is offline.
"CHANNEL"
✔️
Addon message to a custom chat channel. Use channel number as target argument.
Disabled on Classic to prevent players communicating over custom chat channels
"SAY"[1]
✔️
Addon message to players within /say range. Subject to heavy throttling and certain specific characters are disallowed[2]
"YELL"[1]
✔️
Addon message to players within /yell range. Subject to heavy throttling and certain specific characters are disallowed[2]

Details

C_ChatInfo.SendAddonMessageLogged

Addons transmitting user-generated content should use this API so recipients can report violations of the Code of Conduct.

Example

Whispers yourself an addon message when you login or /reload

local prefix = "SomePrefix123"
local playerName = UnitName("player")

local function OnEvent(self, event, ...)
	if event == "CHAT_MSG_ADDON" then
		print(event, ...)
	elseif event == "PLAYER_ENTERING_WORLD" then
		local isLogin, isReload = ...
		if isLogin or isReload then
			C_ChatInfo.SendAddonMessage(prefix, "You can't see this message", "WHISPER", playerName)
			C_ChatInfo.RegisterAddonMessagePrefix(prefix)
			C_ChatInfo.SendAddonMessage(prefix, "Hello world!", "WHISPER", playerName)
		end
	end
end

local f = CreateFrame("Frame")
f:RegisterEvent("CHAT_MSG_ADDON")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:SetScript("OnEvent", OnEvent)

Libraries

There is a server-side throttle on in-game addon communication so it's recommended to serialize, compress and encode data before you send them over the addon comms channel.

Serialize:

Compress/Encode:

Comms:

The LibSerialize project page has detailed examples[4] and documentation for using LibSerialize + LibDeflate and AceComm:

-- Dependencies: AceAddon-3.0, AceComm-3.0, LibSerialize, LibDeflate
MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceComm-3.0")
local LibSerialize = LibStub("LibSerialize")
local LibDeflate = LibStub("LibDeflate")

function MyAddon:OnEnable()
    self:RegisterComm("MyPrefix")
end

-- With compression (recommended):
function MyAddon:Transmit(data)
    local serialized = LibSerialize:Serialize(data)
    local compressed = LibDeflate:CompressDeflate(serialized)
    local encoded = LibDeflate:EncodeForWoWAddonChannel(compressed)
    self:SendCommMessage("MyPrefix", encoded, "WHISPER", UnitName("player"))
end

function MyAddon:OnCommReceived(prefix, payload, distribution, sender)
    local decoded = LibDeflate:DecodeForWoWAddonChannel(payload)
    if not decoded then return end
    local decompressed = LibDeflate:DecompressDeflate(decoded)
    if not decompressed then return end
    local success, data = LibSerialize:Deserialize(decompressed)
    if not success then return end

    -- Handle `data`
end

Patch changes

Retail

Battle for Azeroth Patch 8.0.1 (2018-07-17): Moved to C_ChatInfo.SendAddonMessage() and added C_ChatInfo.SendAddonMessageLogged()
Warlords of Draenor Patch 6.0.2 (2014-10-14): Added "CHANNEL" chat type.
Cataclysm Patch 4.1.0 (2011-04-26): Added "OFFICER" chat type. Addons should now register which prefixes they want to receive addon messages for using C_ChatInfo.RegisterAddonMessagePrefix()[5]
Bc icon Patch 2.1.0 (2007-05-22): Added "WHISPER" chat type was, as servers will begin to rate throttle regular whispers to alleviate spam problems.
WoW Icon update Patch 1.12.0 (2006-08-22): Added as SendAddonMessage()[6]

Classic

WoW Icon update Patch 1.13.4 (2020-03-10): Addon comms are now more severely rate throttled (Applied in a hotfix during build 32466 on May 24 2020) [7]
WoW Icon update Patch 1.13.3 (2019-12-10): "SAY" and "YELL" are now supported chat types, coincident with removing "CHANNEL" to prevent looking-for-group style addons from proliferating in Classic.[1]

See also

References