ソーシャル&チャット API(リテール — パッチ 12.0.0)
チャット、ソーシャル、クラブ/コミュニティ、フレンド、ボイス、BattleNet、および関連 API の包括的なリファレンスです。
ソース: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API
最終更新: パッチ 12.0.0(ビルド 65655)— 2026 年 1 月 28 日
対象範囲: リテールのみ。
重要:12.0.0 のインスタンス内制限
SendAddonMessage() はインスタンス内(ダンジョン、レイド、BG、アリーナ)でブロックされます
- インスタンス内のチャットメッセージはシークレット値(KStrings)になる場合があります
- アドオン通信には、インスタンス外で代替パターンを使用する必要があります
C_ChatInfo.SendAddonMessage() および C_ChatInfo.SendAddonMessageLogged() はインスタンス内でエラーをスローします
対象範囲
- C_ChatInfo — チャットシステム、チャンネル、アドオンメッセージ
- チャットフレーム関数 — SendChatMessage、チャットフィルター、チャットバブル
- C_Club — コミュニティ/クラブシステム
- C_ClubFinder — クラブ検索/メンバー募集
- C_FriendList — フレンドリストの管理
- C_BattleNet — BattleNet のフレンド、プレゼンス、ゲームアカウント
- C_VoiceChat — ボイスチャットシステム
- C_SocialRestrictions — ソーシャル制限の確認
- C_SocialQueue — ソーシャルキューシステム
- C_RecentAllies — 最近の味方の追跡
- C_PingManager — ゲーム内 ping システム
- C_TTSSettings — テキスト読み上げ設定
C_ChatInfo — チャットシステム
主な関数
| 関数 | 戻り値 | 説明 |
|---|
C_ChatInfo.SendAddonMessage(prefix, message, chatType [, target]) | success | アドオンメッセージを送信します(インスタンス内ではブロックされます) |
C_ChatInfo.SendAddonMessageLogged(prefix, message, chatType [, target]) | success | ログ付きアドオンメッセージを送信します(インスタンス内ではブロックされます) |
C_ChatInfo.RegisterAddonMessagePrefix(prefix) | success | CHAT_MSG_ADDON 用のプレフィックスを登録します |
C_ChatInfo.IsAddonMessagePrefixRegistered(prefix) | isRegistered | プレフィックスが登録済みか確認します |
C_ChatInfo.GetRegisteredAddonMessagePrefixes() | prefixes | 登録済みのすべてのプレフィックス |
C_ChatInfo.GetChannelInfoFromIdentifier(identifier) | info | 識別子からチャンネル情報を取得します |
C_ChatInfo.GetChannelRuleset(channelIndex) | rulesetID | チャンネルのルールセット |
C_ChatInfo.GetChannelRulesetForChannelID(channelID) | rulesetID | チャンネル ID からルールセットを取得します |
C_ChatInfo.GetChannelShortcut(channelIndex) | shortcut | チャンネルのショートカット |
C_ChatInfo.GetChannelShortcutForChannelID(channelID) | shortcut | チャンネル ID からショートカットを取得します |
C_ChatInfo.GetChatLineSenderGUID(lineID) | guid | メッセージ送信者の GUID |
C_ChatInfo.GetChatLineSenderName(lineID) | name | メッセージ送信者の名前 |
C_ChatInfo.GetChatLineText(lineID) | text | メッセージのテキスト |
C_ChatInfo.GetChatTypeByID(chatTypeID) | chatType | ID からチャットタイプ文字列を取得します |
C_ChatInfo.GetColorForChatType(chatType) | r, g, b | チャットタイプのデフォルト色 |
C_ChatInfo.GetNumActiveChannels() | numChannels | アクティブなチャンネルの数 |
C_ChatInfo.GetActiveChannelList() | channels | アクティブなチャンネルのリスト |
C_ChatInfo.IsChannelRegional(chatType) | isRegional | チャンネルが地域別かどうかを返します |
C_ChatInfo.IsChatLineCensored(lineID) | isCensored | メッセージが検閲済みかどうかを返します |
C_ChatInfo.IsPartyPositionCategory(category) | isPartyPosition | パーティーの位置カテゴリかどうかを返します |
C_ChatInfo.IsRegionalServiceAvailable() | isAvailable | 地域別サービスが利用可能かどうかを返します |
C_ChatInfo.IsValidChatLine(lineID) | isValid | 行が有効かどうかを返します |
C_ChatInfo.ReplaceIconAndGroupExpressions(message) | text | {rt1}、{skull} などを展開します |
C_ChatInfo.ResetDefaultZoneChannels() | — | ゾーンチャンネルをリセットします |
C_ChatInfo.SwapChatChannelsByChannelIndex(i1, i2) | — | チャンネルの順序を入れ替えます |
グローバルチャット関数
| 関数 | 戻り値 | 説明 |
|---|
SendChatMessage(msg [, chatType [, languageID [, target]]]) | — | チャットメッセージを送信 |
GetNumDisplayChannels() | numChannels | 表示中のチャンネル数 |
GetChannelDisplayInfo(index) | name, header, collapsed, channelNumber, count, active, category, voiceEnabled, voiceActive | チャンネルの表示情報 |
GetChannelName(idOrName) | id, name, instanceID, isCommChannel | チャンネル名/IDを検索 |
JoinChannelByName(name [, password [, frameID]]) | type, name | チャンネルに参加 |
LeaveChannelByName(name) | — | チャンネルから退出 |
ListChannelByName(name) | — | チャンネルのメンバー一覧を取得 |
GetChatWindowInfo(frameIndex) | name, fontSize, r, g, b, alpha, shown, locked, docked, uninteractable | チャットウィンドウの情報 |
SetChatWindowName(frameIndex, name) | — | チャットウィンドウ名を設定 |
LoggingChat(enable) | — | チャットログの記録を切り替え |
LoggingCombat(enable) | — | 戦闘ログの記録を切り替え |
C_Club — コミュニティ/クラブ
クラブ管理
| 関数 | 戻り値 | 説明 |
|---|
C_Club.GetSubscribedClubs() | clubs | 参加中のクラブ一覧 |
C_Club.GetClubInfo(clubId) | info | クラブ情報 |
C_Club.GetClubMembers(clubId [, streamId]) | members | クラブのメンバー一覧 |
C_Club.GetMemberInfo(clubId, memberId) | info | メンバー情報 |
C_Club.GetClubStreamNotificationSettings(clubId) | settings | ストリーム通知設定 |
C_Club.CreateClub(name, shortName, description, clubType, avatarId) | — | 新しいクラブを作成 |
C_Club.DestroyClub(clubId) | — | クラブを削除 |
C_Club.EditClub(clubId, name, shortName, description, avatarId, bgColorIndex) | — | クラブを編集 |
C_Club.LeaveClub(clubId) | — | クラブから退出 |
C_Club.AcceptInvitation(clubId) | — | クラブへの招待を承諾 |
C_Club.DeclineInvitation(clubId) | — | クラブへの招待を辞退 |
C_Club.GetInvitationsForSelf() | invitations | 保留中の招待一覧 |
C_Club.SendInvitation(clubId, memberId) | — | クラブに招待 |
クラブストリーム(クラブ内のチャットチャンネル)
| 関数 | 戻り値 | 説明 |
|---|
C_Club.GetStreams(clubId) | streams | クラブの全ストリーム |
C_Club.GetStreamInfo(clubId, streamId) | info | ストリーム情報 |
C_Club.CreateStream(clubId, name, subject, leadersAndModeratorsOnly) | — | ストリームを作成 |
C_Club.DestroyStream(clubId, streamId) | — | ストリームを削除 |
C_Club.EditStream(clubId, streamId, name, subject, leadersAndModeratorsOnly) | — | ストリームを編集 |
C_Club.GetMessagesBefore(clubId, streamId, messageId, count) | messages | 指定したIDより前のメッセージを取得 |
C_Club.GetMessagesAfter(clubId, streamId, messageId, count) | messages | 指定したIDより後のメッセージを取得 |
C_Club.GetMessagesInRange(clubId, streamId, oldest, newest) | messages | 指定範囲内のメッセージ |
C_Club.SendMessage(clubId, streamId, message) | — | ストリームにメッセージを送信 |
C_Club.FocusStream(clubId, streamId) | — | ストリームにフォーカス |
C_Club.UnfocusStream(clubId, streamId) | — | ストリームのフォーカスを解除 |
C_Club.SetAutoAdvanceStreamViewMarker(clubId, streamId) | — | 表示マーカーを自動で進める |
クラブの種類
| 列挙値 | 値 | 説明 |
|---|
Enum.ClubType.BattleNet | 0 | BattleNetコミュニティ |
Enum.ClubType.Character | 1 | キャラクターコミュニティ |
Enum.ClubType.Guild | 2 | ギルド(クラブとして扱われます) |
Enum.ClubType.Other | 3 | その他 |
C_ClubFinder — クラブ検索/募集
| 関数 | 戻り値 | 説明 |
|---|
C_ClubFinder.RequestClubsList(type, isLinkedSearch, searchText, specIDs) | — | クラブを検索します |
C_ClubFinder.GetRecruitingClubInfoFromClubID(clubId) | recruitInfo | クラブの募集情報 |
C_ClubFinder.GetTotalMatchingCommunityListSize() | size | 条件に一致するコミュニティの合計数 |
C_ClubFinder.GetTotalMatchingGuildListSize() | size | 条件に一致するギルドの合計数 |
C_ClubFinder.RequestPostingInformationFromClubId(clubId) | — | 募集情報をリクエストします |
C_ClubFinder.PostClub(clubId, minIlvl, minLevel, ...) | — | クラブの募集を掲載します |
C_ClubFinder.RequestApplicantList(type) | — | 応募者リストをリクエストします |
C_ClubFinder.GetApplicantInfoList() | applicants | 応募者を取得します |
C_ClubFinder.RespondToApplicant(clubFinderGUID, playerGUID, accepted, ...) | — | 応募者に返答します |
C_FriendList — フレンド
| 関数 | 戻り値 | 説明 |
|---|
C_FriendList.GetNumFriends() | numFriends | キャラクターフレンドの数 |
C_FriendList.GetNumOnlineFriends() | numOnline | オンライン中のフレンドの数 |
C_FriendList.GetFriendInfoByIndex(index) | info | インデックスでフレンド情報を取得します |
C_FriendList.GetFriendInfoByName(name) | info | 名前でフレンド情報を取得します |
C_FriendList.GetFriendInfoByGUID(guid) | info | GUIDでフレンド情報を取得します |
C_FriendList.AddFriend(name [, notes]) | — | フレンドを追加します |
C_FriendList.RemoveFriend(name) | — | フレンドを削除します |
C_FriendList.SetFriendNotes(name, notes) | — | フレンドのメモを設定します |
C_FriendList.AddOrRemoveFriend(name, notes) | — | フレンドの追加/削除を切り替えます |
C_FriendList.IsFriend(guid) | isFriend | このGUIDはフレンドですか? |
C_FriendList.AddIgnore(name) | — | 無視リストに追加します |
C_FriendList.DelIgnore(name) | — | 無視リストから削除します |
C_FriendList.GetNumIgnores() | numIgnores | 無視リストの件数 |
C_FriendList.GetIgnoreName(index) | name | 無視しているプレイヤーの名前 |
C_FriendList.IsIgnored(name) | isIgnored | プレイヤーを無視していますか? |
C_FriendList.IsIgnoredByGUID(guid) | isIgnored | このGUIDを無視していますか? |
C_FriendList.ShowFriends() | — | フレンドリストを更新します |
C_FriendList.GetSelectedFriend() | index | 選択中のフレンドのインデックス |
C_FriendList.SetSelectedFriend(index) | — | フレンドを選択します |
C_BattleNet — BattleNet フレンド
| 関数 | 戻り値 | 説明 |
|---|
C_BattleNet.GetFriendAccountInfo(index) | accountInfo | BNetフレンドのアカウント情報 |
C_BattleNet.GetFriendGameAccountInfo(index, gameAccountIndex) | gameAccountInfo | ゲームアカウント情報 |
C_BattleNet.GetFriendNumGameAccounts(index) | numGameAccounts | フレンドのゲームアカウント数 |
C_BattleNet.GetAccountInfoByID(bnetAccountID) | accountInfo | IDでアカウント情報を取得します |
C_BattleNet.GetAccountInfoByGUID(guid) | accountInfo | GUIDでアカウント情報を取得します |
C_BattleNet.GetGameAccountInfoByID(gameAccountID) | gameAccountInfo | ゲームアカウント情報 |
C_BattleNet.GetGameAccountInfoByGUID(guid) | gameAccountInfo | GUIDでゲームアカウントを取得します |
BNGetNumFriends() | numFriends, numOnline | BNetフレンドの数 |
BNGetNumFriendInvites() | numInvites | 保留中のBNet招待数 |
BNSendWhisper(bnetAccountID, message) | — | BNetのウィスパーを送信します |
BNInviteFriend(bnetAccountID) | — | グループに招待します |
BNRequestInviteFriend(presenceID) | — | BNetフレンドへの追加をリクエストします |
BNRemoveFriend(bnetAccountID) | — | BNetフレンドを削除します |
BNSetFriendNote(bnetAccountID, note) | — | フレンドのメモを設定します |
BNSetCustomMessage(message) | — | BNetのステータスメッセージを設定します |
BNConnected() | isConnected | BNetに接続していますか? |
C_VoiceChat — ボイスチャット
| 関数 | 戻り値 | 説明 |
|---|
C_VoiceChat.GetActiveChannelID() | channelID | アクティブなボイスチャンネル |
C_VoiceChat.GetChannel(channelID) | channel | チャンネル情報 |
C_VoiceChat.GetChannelForChannelType(channelType) | channel | 種類別のチャンネル |
C_VoiceChat.GetChannelForCommunityStream(clubId, streamId) | channel | クラブのボイスチャンネル |
C_VoiceChat.GetMasterVolumeScale() | scale | マスター音量 |
C_VoiceChat.SetMasterVolumeScale(scale) | — | マスター音量を設定 |
C_VoiceChat.GetInputVolume() | volume | マイク音量 |
C_VoiceChat.SetInputVolume(volume) | — | マイク音量を設定 |
C_VoiceChat.GetOutputVolume() | volume | スピーカー音量 |
C_VoiceChat.SetOutputVolume(volume) | — | スピーカー音量を設定 |
C_VoiceChat.IsMuted() | isMuted | ミュート中かどうか |
C_VoiceChat.SetMuted(muted) | — | ミュートを設定 |
C_VoiceChat.IsDeafened() | isDeafened | 聴覚遮断中かどうか |
C_VoiceChat.SetDeafened(deafened) | — | 聴覚遮断を設定 |
C_VoiceChat.IsSilenced() | isSilenced | (Blizzardによって)発言を禁止されているかどうか |
C_VoiceChat.ActivateChannel(channelID) | — | ボイスチャンネルを有効化 |
C_VoiceChat.DeactivateChannel(channelID) | — | ボイスチャンネルを無効化 |
C_VoiceChat.IsLoggedIn() | isLoggedIn | ボイスチャットにログインしているかどうか |
C_VoiceChat.Login() | — | ボイスチャットにログイン |
C_VoiceChat.Logout() | — | ボイスチャットからログアウト |
C_VoiceChat.GetMemberName(memberID, channelID) | name | ボイスメンバー名 |
C_VoiceChat.GetMemberVolume(memberID, channelID) | volume | メンバーの音量 |
C_VoiceChat.SetMemberVolume(memberID, channelID, volume) | — | メンバーの音量を設定 |
C_VoiceChat.IsMemberMuted(memberID, channelID) | isMuted | メンバーがミュート中かどうか |
C_VoiceChat.SetMemberMuted(memberID, channelID, muted) | — | メンバーをミュート |
C_SocialRestrictions
| 関数 | 戻り値 | 説明 |
|---|
C_SocialRestrictions.IsChatDisabled() | isDisabled | チャットが制限されているかどうか |
C_SocialRestrictions.IsMuted() | isMuted | プレイヤーがミュートされているかどうか |
C_SocialRestrictions.IsSilenced() | isSilenced | プレイヤーの発言が禁止されているかどうか |
C_SocialRestrictions.IsSquelched() | isSquelched | プレイヤーがチャット制限されているかどうか |
C_SocialQueue — ソーシャルキュー
| 関数 | 戻り値 | 説明 |
|---|
C_SocialQueue.GetAllGroups() | groups | すべてのソーシャルキューグループ |
C_SocialQueue.GetGroupInfo(guid) | info | グループキュー情報 |
C_SocialQueue.GetGroupMembers(guid) | members | グループメンバー一覧 |
C_SocialQueue.GetGroupQueues(guid) | queues | グループキュー |
C_RecentAllies
| 関数 | 戻り値 | 説明 |
|---|
C_RecentAllies.GetRecentAllies() | allies | 最近のグループ仲間 |
C_PingManager — pingシステム
| 関数 | 戻り値 | 説明 |
|---|
C_PingManager.GetPingTypeFromUIMouseButton(button) | pingType | マウスボタンに対応するpingの種類 |
C_PingManager.TogglePingListener(enabled) | — | pingの受信を切り替え |
C_TTSSettings — テキスト読み上げ
| 関数 | 戻り値 | 説明 |
|---|
C_TTSSettings.GetChatTypeEnabled(chatType) | enabled | チャットの種類でテキスト読み上げが有効かどうか |
C_TTSSettings.SetChatTypeEnabled(chatType, enabled) | — | チャットの種類ごとのテキスト読み上げを切り替え |
C_TTSSettings.GetSetting(setting) | value | テキスト読み上げ設定を取得 |
C_TTSSettings.SetSetting(setting, value) | — | テキスト読み上げ設定を設定 |
C_TTSSettings.GetVoiceOptionID(voiceType) | optionID | 音声オプションを取得 |
よくあるパターン
アドオンメッセージの登録と処理
local ADDON_PREFIX = "MyAddon"
C_ChatInfo.RegisterAddonMessagePrefix(ADDON_PREFIX)
local frame = CreateFrame("Frame")
frame:RegisterEvent("CHAT_MSG_ADDON")
frame:SetScript("OnEvent", function(self, event, prefix, message, channel, sender)
if prefix == ADDON_PREFIX then
-- Process addon message
print("Got message from", sender, ":", message)
end
end)
-- Send message (FAILS in instances in 12.0.0!)
local function SendMessage(msg, target)
if not IsInInstance() then
C_ChatInfo.SendAddonMessage(ADDON_PREFIX, msg, "PARTY")
else
-- In-instance: cannot send addon messages
-- Consider using encounter events or built-in APIs instead
end
end
チャットメッセージフィルター
-- Filter chat messages to modify or suppress them
ChatFrame_AddMessageEventFilter("CHAT_MSG_SAY", function(self, event, msg, author, ...)
if msg:find("badword") then
return true -- suppress the message
end
-- Modify the message
local newMsg = msg:gsub("hello", "|cff00ff00hello|r")
return false, newMsg, author, ...
end)
フレンドの列挙
local function GetOnlineFriends()
local friends = {}
local numFriends = C_FriendList.GetNumFriends()
for i = 1, numFriends do
local info = C_FriendList.GetFriendInfoByIndex(i)
if info and info.connected then
table.insert(friends, info)
end
end
-- Also check BNet friends
local numBNet, numOnlineBNet = BNGetNumFriends()
for i = 1, numBNet do
local acctInfo = C_BattleNet.GetFriendAccountInfo(i)
if acctInfo and acctInfo.gameAccountInfo and acctInfo.gameAccountInfo.isOnline then
table.insert(friends, acctInfo)
end
end
return friends
end
主なイベント
| イベント | ペイロード | 説明 |
|---|
CHAT_MSG_SAY | msg, author, language, channelString, target, flags, ... | /say メッセージ |
CHAT_MSG_YELL | msg, author, ... | /yell メッセージ |
CHAT_MSG_PARTY | msg, author, ... | パーティーメッセージ |
CHAT_MSG_PARTY_LEADER | msg, author, ... | パーティーリーダーのメッセージ |
CHAT_MSG_RAID | msg, author, ... | レイドメッセージ |
CHAT_MSG_RAID_LEADER | msg, author, ... | レイドリーダーのメッセージ |
CHAT_MSG_GUILD | msg, author, ... | ギルドメッセージ |
CHAT_MSG_OFFICER | msg, author, ... | ギルド幹部のメッセージ |
CHAT_MSG_WHISPER | msg, author, ... | 受信したウィスパー |
CHAT_MSG_WHISPER_INFORM | msg, target, ... | 送信したウィスパー |
CHAT_MSG_BN_WHISPER | msg, author, ... | 受信したBNetウィスパー |
CHAT_MSG_BN_WHISPER_INFORM | msg, target, ... | 送信したBNetウィスパー |
CHAT_MSG_CHANNEL | msg, author, language, channelString, target, flags, zoneChannelID, channelIndex, channelBaseName, ... | チャンネルメッセージ |
CHAT_MSG_ADDON | prefix, message, channel, sender | アドオンメッセージを受信 |
CHAT_MSG_ADDON_LOGGED | prefix, message, channel, sender | ログ記録済みのアドオンメッセージ |
CHAT_MSG_SYSTEM | msg | システムメッセージ |
CHAT_MSG_EMOTE | msg, author, ... | エモートメッセージ |
CHAT_MSG_TEXT_EMOTE | msg, author, ... | /emote のテキスト |
FRIENDLIST_UPDATE | — | フレンドリストが変更されました |
BN_FRIEND_LIST_SIZE_CHANGED | — | BNetリストが変更されました |
BN_FRIEND_INFO_CHANGED | bnetAccountID | BNetフレンドが更新されました |
BN_CONNECTED | — | BNetに接続しました |
BN_DISCONNECTED | — | BNetから切断されました |
CLUB_ADDED | clubId | クラブに参加しました |
CLUB_REMOVED | clubId | クラブを退出しました |
CLUB_UPDATED | clubId | クラブ情報が更新されました |
CLUB_MESSAGE_ADDED | clubId, streamId, messageId | 新しいクラブメッセージ |
CLUB_MEMBER_ADDED | clubId, memberId | メンバーがクラブに参加しました |
CLUB_MEMBER_REMOVED | clubId, memberId | メンバーがクラブを退出しました |
CLUB_MEMBER_UPDATED | clubId, memberId | メンバー情報が更新されました |
VOICE_CHAT_CHANNEL_ACTIVATED | channelID | ボイスチャンネルが有効になりました |
VOICE_CHAT_CHANNEL_DEACTIVATED | channelID | ボイスチャンネルが無効になりました |
VOICE_CHAT_CHANNEL_MEMBER_ADDED | memberID, channelID | メンバーがボイスチャンネルに参加しました |
VOICE_CHAT_CHANNEL_MEMBER_REMOVED | memberID, channelID | メンバーがボイスチャンネルを退出しました |
注意事項と制限
- インスタンス内ではSendAddonMessageがブロックされます — 12.0.0では、ダンジョン、レイド、BG、アリーナ内で
C_ChatInfo.SendAddonMessage()およびSendAddonMessageLogged()を呼び出すとエラーが発生します。
- チャットメッセージが秘匿値の場合があります — インスタンス内では、他のプレイヤーからのチャットメッセージの内容がKStrings/秘匿値の場合があります。
- アドオンプレフィックスの上限 — アドオンメッセージのプレフィックスは最大16文字です。
- アドオンメッセージサイズの上限 — アドオンメッセージは1件あたり最大255文字です。
- チャットの送信制限 —
SendChatMessage()には送信制限があります。送信が速すぎると切断されます。
- ハードウェアイベントが必要 — 一部のチャット関数の実行には、ハードウェアイベント(マウスクリック/キー押下)が必要です。
- BNetフレンドリスト —
BNGetFriendInfo()は非推奨です。C_BattleNet.GetFriendAccountInfo()を使用してください。
- クラブタイプGuild — ギルドは
Enum.ClubType.Guildを持つクラブとして扱われます。C_Clubを使用してギルドのチャットストリームを操作してください。
- ボイスチャットへのログイン — ボイスチャットには明示的なログインが必要です。操作の前に
C_VoiceChat.IsLoggedIn()を確認してください。
- チャットフィルター —
ChatFrame_AddMessageEventFilterによるフィルターは、すべてのチャットフレームにおける該当イベントのすべてのインスタンスに適用されます。