mcpField
W
wow-api-social-chat

wow-api-social-chat

github.com/jburlison開発4638 回インストール37 週間前に更新
リポジトリ

wow-api-social-chat について

World of Warcraft Retailの開発者向けに、Patch 12.0.0のチャット・ソーシャルAPIをまとめたリファレンスです。チャット、クラブ、フレンド、BattleNet、ボイス機能と、インスタンス内の制限を扱います。

主な機能

  1. 01チャットチャンネルとメッセージ
  2. 02クラブとストリームの管理
  3. 03フレンドとBattleNetアカウント
  4. 04クラブ検索とメンバー募集
  5. 05ボイス・ソーシャルAPI
  6. 06インスタンス内の通信制限

活用シーン

  1. 01チャット関連アドオンの開発
  2. 02クラブのストリームと招待の管理
  3. 03フレンド・BattleNetデータの利用
  4. 04インスタンス内の通信制限の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jburlison/wowaddonapiagents --skill wow-api-social-chat

インストール後、Claude Code で/wow-api-social-chatを入力して読み込まれたか確認します。

詳細

ソーシャル&チャット 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)successCHAT_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)chatTypeID からチャットタイプ文字列を取得します
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.BattleNet0BattleNetコミュニティ
Enum.ClubType.Character1キャラクターコミュニティ
Enum.ClubType.Guild2ギルド(クラブとして扱われます)
Enum.ClubType.Other3その他

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)infoGUIDでフレンド情報を取得します
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)accountInfoBNetフレンドのアカウント情報
C_BattleNet.GetFriendGameAccountInfo(index, gameAccountIndex)gameAccountInfoゲームアカウント情報
C_BattleNet.GetFriendNumGameAccounts(index)numGameAccountsフレンドのゲームアカウント数
C_BattleNet.GetAccountInfoByID(bnetAccountID)accountInfoIDでアカウント情報を取得します
C_BattleNet.GetAccountInfoByGUID(guid)accountInfoGUIDでアカウント情報を取得します
C_BattleNet.GetGameAccountInfoByID(gameAccountID)gameAccountInfoゲームアカウント情報
C_BattleNet.GetGameAccountInfoByGUID(guid)gameAccountInfoGUIDでゲームアカウントを取得します
BNGetNumFriends()numFriends, numOnlineBNetフレンドの数
BNGetNumFriendInvites()numInvites保留中のBNet招待数
BNSendWhisper(bnetAccountID, message)—BNetのウィスパーを送信します
BNInviteFriend(bnetAccountID)—グループに招待します
BNRequestInviteFriend(presenceID)—BNetフレンドへの追加をリクエストします
BNRemoveFriend(bnetAccountID)—BNetフレンドを削除します
BNSetFriendNote(bnetAccountID, note)—フレンドのメモを設定します
BNSetCustomMessage(message)—BNetのステータスメッセージを設定します
BNConnected()isConnectedBNetに接続していますか?

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_SAYmsg, author, language, channelString, target, flags, .../say メッセージ
CHAT_MSG_YELLmsg, author, .../yell メッセージ
CHAT_MSG_PARTYmsg, author, ...パーティーメッセージ
CHAT_MSG_PARTY_LEADERmsg, author, ...パーティーリーダーのメッセージ
CHAT_MSG_RAIDmsg, author, ...レイドメッセージ
CHAT_MSG_RAID_LEADERmsg, author, ...レイドリーダーのメッセージ
CHAT_MSG_GUILDmsg, author, ...ギルドメッセージ
CHAT_MSG_OFFICERmsg, author, ...ギルド幹部のメッセージ
CHAT_MSG_WHISPERmsg, author, ...受信したウィスパー
CHAT_MSG_WHISPER_INFORMmsg, target, ...送信したウィスパー
CHAT_MSG_BN_WHISPERmsg, author, ...受信したBNetウィスパー
CHAT_MSG_BN_WHISPER_INFORMmsg, target, ...送信したBNetウィスパー
CHAT_MSG_CHANNELmsg, author, language, channelString, target, flags, zoneChannelID, channelIndex, channelBaseName, ...チャンネルメッセージ
CHAT_MSG_ADDONprefix, message, channel, senderアドオンメッセージを受信
CHAT_MSG_ADDON_LOGGEDprefix, message, channel, senderログ記録済みのアドオンメッセージ
CHAT_MSG_SYSTEMmsgシステムメッセージ
CHAT_MSG_EMOTEmsg, author, ...エモートメッセージ
CHAT_MSG_TEXT_EMOTEmsg, author, .../emote のテキスト
FRIENDLIST_UPDATE—フレンドリストが変更されました
BN_FRIEND_LIST_SIZE_CHANGED—BNetリストが変更されました
BN_FRIEND_INFO_CHANGEDbnetAccountIDBNetフレンドが更新されました
BN_CONNECTED—BNetに接続しました
BN_DISCONNECTED—BNetから切断されました
CLUB_ADDEDclubIdクラブに参加しました
CLUB_REMOVEDclubIdクラブを退出しました
CLUB_UPDATEDclubIdクラブ情報が更新されました
CLUB_MESSAGE_ADDEDclubId, streamId, messageId新しいクラブメッセージ
CLUB_MEMBER_ADDEDclubId, memberIdメンバーがクラブに参加しました
CLUB_MEMBER_REMOVEDclubId, memberIdメンバーがクラブを退出しました
CLUB_MEMBER_UPDATEDclubId, memberIdメンバー情報が更新されました
VOICE_CHAT_CHANNEL_ACTIVATEDchannelIDボイスチャンネルが有効になりました
VOICE_CHAT_CHANNEL_DEACTIVATEDchannelIDボイスチャンネルが無効になりました
VOICE_CHAT_CHANNEL_MEMBER_ADDEDmemberID, channelIDメンバーがボイスチャンネルに参加しました
VOICE_CHAT_CHANNEL_MEMBER_REMOVEDmemberID, channelIDメンバーがボイスチャンネルを退出しました

注意事項と制限

  1. インスタンス内ではSendAddonMessageがブロックされます — 12.0.0では、ダンジョン、レイド、BG、アリーナ内でC_ChatInfo.SendAddonMessage()およびSendAddonMessageLogged()を呼び出すとエラーが発生します。
  2. チャットメッセージが秘匿値の場合があります — インスタンス内では、他のプレイヤーからのチャットメッセージの内容がKStrings/秘匿値の場合があります。
  3. アドオンプレフィックスの上限 — アドオンメッセージのプレフィックスは最大16文字です。
  4. アドオンメッセージサイズの上限 — アドオンメッセージは1件あたり最大255文字です。
  5. チャットの送信制限 — SendChatMessage()には送信制限があります。送信が速すぎると切断されます。
  6. ハードウェアイベントが必要 — 一部のチャット関数の実行には、ハードウェアイベント(マウスクリック/キー押下)が必要です。
  7. BNetフレンドリスト — BNGetFriendInfo()は非推奨です。C_BattleNet.GetFriendAccountInfo()を使用してください。
  8. クラブタイプGuild — ギルドはEnum.ClubType.Guildを持つクラブとして扱われます。C_Clubを使用してギルドのチャットストリームを操作してください。
  9. ボイスチャットへのログイン — ボイスチャットには明示的なログインが必要です。操作の前にC_VoiceChat.IsLoggedIn()を確認してください。
  10. チャットフィルター — ChatFrame_AddMessageEventFilterによるフィルターは、すべてのチャットフレームにおける該当イベントのすべてのインスタンスに適用されます。

コメント