Guild Herold

GuildHerold automates guild recruitment. It scans for unguilded players, sends smart whispers, tracks invites and responses, and provides a live dashboard with stats and notes. Includes filters, blacklist/whitelist, cooldowns, and anti-spam protection.
Back to Files

GuildRecruiting v2.0.0

File nameGuildRecruiting.zip
Uploader
PsYke86PsYke86
Uploaded
Jun 14, 2026
Downloads
29
Size
88.9 KB
Flavors
ClassicClassic TBC
File ID
8248614
Type
R
Release
Supported game versions
  • 2.5.5
  • 1.15.8

What's new

# GuildHerald – Changelog

## [2.0.0] – 2026-06-14
### Added
- **Whisper-Recruiter (neue Module `Recruiter.lua` + `RecruiterUI.lua`).** Schreibt potenzielle Mitglieder per `/w` an — **opt-in, Standard AUS**. Eigenes Options-Fenster über `/gh recruit`.
  - **Passiv:** Spieler, die im Chat (Channel/Say/Yell) nach Gilde fragen, werden — wenn gewünscht — per `/who` auf ihr Level geprüft und nur bei Treffer im Level-Bereich + passender Sprache angeschrieben.
  - **Aktiv:** optionaler `/who`-Sweep über den eingestellten Level-Bereich (rotierende Level-Fenster, gildenlose Treffer werden gequeued). Aggressiv — bewusst opt-in.
  - **Level von–bis**, **Ziel-Sprache** (Auto/DE/EN/FR/ES/Alle; Sprache wird beim passiven Treffer am Keyword erkannt — aktiv gibt es kein Sprach-Signal), **eigener Whisper-Text** (`[GuildName]`, `[Name]`, `%s` werden ersetzt).
  - **Sicherheit:** Buffer zwischen Whispers (min. 6s erzwungen), **24h-Sperre pro Spieler** (persistiert), Cap pro Sweep, Blacklist + laufende Einladungen werden respektiert (kein Doppel-Kontakt). `/who` läuft über einen throttled Scheduler (1 Abfrage / 5s) und unterdrückt das Social-Fenster.
- Slash: `/gh recruit` (Fenster), `/gh recruit on|off`, `/gh recruit status`.

### Hinweis / Verantwortung
- Massen-Whisper an Fremde (besonders der aktive `/who`-Sweep) gilt auf vielen Servern als Spam und kann Mute/Report nach sich ziehen. Deshalb Standard AUS, mit Buffer/24h-Sperre als Schutz. Nutzung auf eigenes Risiko. Level/Sprache sind technisch nur so weit ermittelbar, wie WoW es zulässt (`/who` für Level; Sprache nur passiv am Keyword).

## [1.8.0] – 2026-06-14
### Added
- **Channel-Intelligenz (neues Modul `ChannelIntel.lua`).** Das Addon misst jetzt, *wo* die Gildensucher tatsächlich sind, statt blind zu posten. Der Scanner läuft ohnehin über alle Kanäle in denen du bist — pro Kanal werden Gildensucher-Treffer mitgezählt (heute + gesamt) und mit der Live-Mitgliederzahl (`GetChannelDisplayInfo`) zu einem Ranking kombiniert. Abruf via `/gh intel`.
- **Auto-Erkennung aktiver Recruit-Kanäle (`/gh probe`, beim Login automatisch).** Eine kurze, kuratierte Liste gängiger Namen (LFGuild, GuildRecruitment, Recruitment, Guilds, Gildensuche, Gildenwerbung) wird gestaffelt geprobt: joinen → 8s messen → behalten wenn ≥2 Mitglieder, sonst wieder verlassen. **Sicherheitsregel:** ein Kanal wird *nur* verlassen, wenn wir nachweislich das einzige Mitglied sind (count == 1) — so entstehen keine Ghost-Channels und ein echter Kanal wird nie versehentlich verlassen. Tote Namen werden gemerkt und erst nach 3 Tagen erneut geprobt.
- **Highlight von Gildensuchern.** (1) Chat: passende Zeilen in Channel/Say/Yell werden via `ChatFrame_AddMessageEventFilter` mit ★ markiert und eingefärbt (eigene Nachrichten ausgenommen, keine Doppel-Markierung). (2) Minimap: der Button pulst bei einem Treffer in Azur (klar unterscheidbar vom Post-Fällig-Grün), mit 60s-Dedupe pro Spieler und 1,5s-Throttle gegen Puls-Spam.

### Changed
- Neue DB-Schalter (alle Default an): `intelEnabled`, `highlightChat`, `highlightPulse`, `autoProbeRecruitChannels`. Keyword-Test in eine geteilte Funktion `GH:CheckGuildSeeker` herausgezogen (Scanner, Stats und Chat-Filter nutzen jetzt denselben Code). `GH:PulseMinimapButton(r,g,b)` akzeptiert optional eine Farbe.
- **Minimap-Button:** die 3 kreisenden Orbs (Orrery) durch einen dezent atmenden Gold-Ring ersetzt — eigene weiche Ring-Textur (`GlowRing.tga`), konsistent mit dem HCRoleplay-Button. Bei „Post fällig" färbt sich der Ring grün.

### Hinweis
- WoW Classic Era erlaubt keinem Addon, den Server nach Kanälen oder Spielern abzusuchen — sichtbar sind nur Kanäle, in denen man selbst ist. Die „Intelligenz" ist daher daten-basiert (beobachtet/gemessen), nicht geraten. Das ist Absicht, kein Limit der Umsetzung.

## [1.7.4] – 2026-06-13
### Fixed
- **Interne Version + eingebettetes What's-New-Changelog mit der TOC synchronisiert.** `GH.VERSION` stand noch auf `1.7.1`, während TOC und `CHANGELOG.md` bereits `1.7.3` waren. Folge: Das Login-Banner zeigte `v1.7.1` und das What's-New-Popup blieb hängen — es gated über `lastSeenVersion == GH.VERSION`, sah also nie die 1.7.2/1.7.3-Änderungen. `GH.VERSION` an die TOC gekoppelt und die fehlenden Einträge 1.7.2 + 1.7.3 in `GH.CHANGELOG` (WhatsNew.lua) nachgetragen, damit Popup und Markdown-Changelog wieder übereinstimmen.

## [1.7.3] – 2026-06-13
### Fixed
- **Korrupte `.toc` repariert (Datei-Truncation).** Die letzte Ladezeile war auf `UI/Whats` abgeschnitten — `UI/WhatsNew.lua` wurde nicht mehr geladen (WhatsNew-Popup fehlte). Zeile wiederhergestellt; der restliche Addon-Code war vollständig und fehlerfrei. Ursache: Filesystem-/Sync-Korruption, kein Logikfehler.

## [1.7.2] – 2026-06-13
### Fixed
- **Autor-Feld im .toc gesetzt (`PsYke86`)** — war leer. Reine Paket-Metadaten, kein Code- oder Verhaltenswechsel.

## [1.7.1] – 2026-06-11

### Fixed
- **Auto-Join joined ghost channels on non-English clients (critical).** The
  hardcoded German channel names were wrong (`GruppenSuche` instead of
  `SucheNachGruppe`, `Lokale Verteidigung` instead of `LokaleVerteidigung`).
  `JoinChannelByName` with a non-existing server channel silently creates a
  dead CUSTOM channel — posts and scans went nowhere. Channel names are now
  resolved live via `EnumerateServerChannels()`; the addon never blind-joins
  a guessed server channel name again.
- **Trade channel join failed permanently outside cities.** The join was
  attempted exactly once at login. Now: retry ticker (every 12s, up to 10
  attempts) plus automatic re-check on `ZONE_CHANGED_NEW_AREA` — entering a
  capital city picks up Trade automatically.

### Added
- **Scan all channels** master switch (Channels tab, default ON): the scanner
  evaluates every `CHAT_MSG_CHANNEL` message regardless of channel. The
  per-channel monitor filter is greyed out while active.
- **Whisper scanning** (default ON): incoming whispers are matched against the
  keyword list — catches replies to the guild ad.
- Joined channels are added to the default chat frame (`ChatFrame_AddChannel`)
  so they are actually visible.
- `/gh channels` now triggers an immediate join attempt and warns when Trade
  is unavailable outside a capital city.


## [1.7.0] – 2026-06-10
### Feature/Fix – Verifiziertes Posten · Recruit-Alert-Toast · UI-Update

#### Fix (kritisch): Kanal-Posts kamen nicht an
- **Root-Cause 1 – Server-Spamfilter**: Identische Nachrichten innerhalb von ~10 Sekunden werden serverseitig **kommentarlos verworfen** – auch wenn sie in *verschiedene* Kanäle gehen. `pcall(SendChatMessage)` meldet trotzdem Erfolg. Bei aktiviertem Allgemein+Handel ging daher pro Klick maximal ein Post durch, oft keiner.
- **Root-Cause 2 – Multiline-Editbox**: Ein Enter in der Rekrutierungsnachricht erzeugte einen Zeilenumbruch, den `SendChatMessage` nicht akzeptiert.
- **Root-Cause 3 – 255-Byte-Limit**: Nach der `[GuildName]`-Ersetzung konnte die Nachricht das Limit reißen.

#### Neu: Post-Pipeline mit Echo-Verifikation (`PostQueue.lua`)
- **Echo-Verifikation**: Das Addon lauscht auf das eigene `CHAT_MSG_CHANNEL`-Echo. Nur eine tatsächlich angekommene Nachricht zählt als gepostet. Kein Echo binnen 2,5 s → Kanal zurück in die Queue + klare Chat-Meldung.
- **1 Kanal pro Klick** mit 10-Sekunden-Abstand zwischen Kanälen (umgeht den Duplikat-Spamfilter). Toast und Übersicht-Button zeigen Fortschritt `(2/3)`, Countdown und den nächsten Kanal.
- **Sanitizer** (`GH.SanitizeOutgoing`): Newlines/Tabs → Leerzeichen, Pipe-Zeichen raus, UTF-8-sicheres Kürzen auf 255 Bytes.
- Statistiken: `postsToday` / `totalPosts` zählen nur **bestätigte** Posts.
- `GetChannelList()` (echte Beitrittsliste) ist jetzt der primäre Pass der Kanal-Auflösung.

#### Neu: Recruit-Alert-Toast + Manueller Modus (`UI/ScanToast.lua`)
- Schalter „Manueller Modus" in der Übersicht: Scanner-Treffer lösen **keine** Auto-Einladung mehr aus, sondern einen grünen Alert-Toast mit Match-Queue („+N weitere").
- Aktionen pro Treffer: **Whisper + Einladen** (volle Pipeline), **Chat öffnen** (`/w Name` vorgefüllt), **Ignorieren** (startet Cooldown).

#### UI-Update
- Navigations-Buttons mit Icons (entsättigt wenn inaktiv), Changelog-Link in der Sidebar.
- Übersicht: vier Statistik-Karten (Einladungen/Posts, heute/gesamt).
- Nachrichten-Tab: Live-Byte-Zähler (Limit-Warnung nach `[GuildName]`-Ersetzung).

#### Neue Befehle & SavedVars
- `/gh test <text>` – simuliert eine Chatzeile durch den Keyword-Scanner.
- Neue Keys: `manualInvite`, `postsToday`, `totalPosts`.

This mod has no additional files