promotional bannermobile promotional banner

LibGuildRoster

A library for use in WoW addons that manages the guild members and roster to make that data available for use in your addon.

File Details

GuildRoster-v0.0.3

  • R
  • May 22, 2026
  • 18.62 KB
  • 0
  • 12.0.1+6
  • Retail + 2

File Name

GuildRoster-GuildRoster-v0.0.3.zip

Supported Versions

  • 12.0.1
  • 12.0.0
  • 11.2.7
  • 4.4.0
  • 3.4.3
  • 2.5.5
  • 1.15.8

Changelog

All notable changes to LibGuildRoster-1.0 are documented here.

0.0.3 — Switch to Ace3-supplied LibStub / CallbackHandler-1.0

Fixed

  • Standalone install no longer errors on missing LibStub. v0.0.1 and v0.0.2 declared LibStub and CallbackHandler-1.0 as .pkgmeta externals, so a raw git checkout (or a dev sync that didn't go through the CurseForge packager) had no Libs/LibStub/LibStub.lua on disk and the TOC's Libs\LibStub\LibStub.lua line produced a LUA_WARNING: Error loading GuildRoster/Libs/LibStub/LibStub.lua. The TOCs no longer reference those files at all; Ace3 supplies both libraries globally via LibStub before LibGuildRoster-1.0.lua runs.

Changed

  • Ace3 is now a required dependency. All five TOCs declare ## Dependencies: Ace3 and .pkgmeta lists required-dependencies: - ace3, so CurseForge auto-installs Ace3 alongside this lib and the game loader pulls it in first at runtime. The externals: block has been removed from .pkgmeta.
  • enable-toc-creation: no because we ship explicit TOCs for every flavour and don't need the packager to synthesise any.

Notes for embedding consumers

If your addon embeds this lib via externals:, you still need LibStub and CallbackHandler-1.0 available before LibGuildRoster-1.0.lua loads — either from your own embedded copies, from Ace3 as a dependency of your addon, or from any other lib that brings them in. The lib itself no longer ships them.

No library API or behaviour changes; LibStub MINOR stays at 3.

0.0.2 — Locale fix, expanded member data, rank-change callback

LibStub MINOR bumped to 3.

Fixed

  • CHAT_MSG_SYSTEM patterns are now locale-aware. The hardcoded English strings ("has come online", "has joined the guild", etc.) silently failed on every non-English client — German, French, Russian, Chinese, and others were all reduced to picking up online/offline/join/leave transitions only on the next full GUILD_ROSTER_UPDATE rebuild instead of in real time. Patterns are now built once at file load from Blizzard's localized format-string globals (ERR_FRIEND_ONLINE_SS, ERR_FRIEND_OFFLINE_S, ERR_GUILD_JOIN_S, ERR_GUILD_LEAVE_S, ERR_GUILD_REMOVE_SS). Chat-hyperlink markup is stripped from incoming messages before matching, and brackets [Name] are made optional in the pattern so both bracketed and bare forms match.

Added

  • Expanded GetMember fields. The member table now includes zone, publicNote, officerNote, status (0 = available, 1 = AFK, 2 = DND), isMobile (Companion App connection), and lastOnline ({ years, months, days, hours } for offline members, nil otherwise). Previously these were silently discarded from the GetGuildRosterInfo return — consumers had to re-iterate the whole roster themselves to recover them.
  • lib:IsReady() getter. Returns true once the first stabilized full roster build has completed. Consumers that register callbacks after the lib has already initialized (common on /reload, or when the consumer addon loads later than the lib) would otherwise miss the OnRosterReady fire; check IsReady() and run the ready-time logic inline when it returns true.
  • OnMemberRankChanged(name, oldRankIndex, newRankIndex) callback. Fires when a member's rank changes between rebuilds. Skipped during the initial roster stream so partial-snapshot rank transitions can't misfire; only fires for members that existed in the previous roster.

0.0.1 — Initial release

First release of LibGuildRoster-1.0 as a standalone CurseForge library, extracted from its prior home as a vendored copy inside FastGuildInvite. Pre-1.0 versioning while the standalone packaging and external-reference flow are validated end-to-end against a real consumer build.

Library behaviour

  • Tracks the WoW guild roster with wipe-and-rebuild semantics — no stale ex-members possible.
  • GUILD_ROSTER_UPDATE drives full rebuilds; CHAT_MSG_SYSTEM drives real-time online / offline / join / leave transitions between rebuilds.
  • Retries the initial roster fetch up to 5 times at login to handle the window where GetNumGuildMembers() returns 0.
  • Stabilization gate (2 consecutive rebuilds with the same member total) before OnRosterReady fires, preventing partial-snapshot misfires during the retail login roster stream.
  • OnMemberJoined fires only from the authoritative CHAT_MSG_SYSTEM "X has joined the guild" message, never from roster diffs.
  • Recently-left dedup (60 s TTL) prevents stale GUILD_ROSTER_UPDATE responses from misfiring OnMemberJoined for a player who just left.
  • On retail, calls SetGuildRosterShowOffline(true) at PLAYER_LOGIN so the rebuilt roster sees the full guild rather than only online members.

Compatibility

  • Classic Era (Interface 11508)
  • Burning Crusade Classic (Interface 20505)
  • Wrath Classic (Interface 30403)
  • Cataclysm Classic (Interface 40400)
  • Mainline / Retail (Interface 110207, 120001, 120000)

Public API

IsInGuild, IsOnline, GetMember, GetAllMembers, GetOnlineMembers.

Callbacks

OnRosterReady, OnRosterUpdated, OnMemberOnline, OnMemberOffline, OnMemberJoined, OnMemberLeft.