!lurkers
Pro !lurkerlist
Listet alle User die aktuell als Lurker markiert sind. Braucht eine kurze C#-Sub-Action weil Streamer.bot keinen Built-in User-Global-Enumerator hat.
- Steps
- 2
- Cooldown
- 1 min/User
- Cooldown
- 30sglobal
- Zugriff
- Public
!lurkerlist
Listet alle User die aktuell als Lurker markiert sind. Braucht eine kurze C#-Sub-Action weil Streamer.bot keinen Built-in User-Global-Enumerator hat.
Streamer.bot kann pro User Globals speichern (isLurking=true), bietet aber kein Built-in zum Auflisten aller User-Globals. Lösung: eine kleine C#-Sub-Action die durch die User-Datenbank iteriert und alle Lurker zurückgibt.
[Cmd] !lurkersIteriert durch alle User-Globals mit Key 'isLurking', sammelt User mit Value=true.
| Code | siehe C#-Block unten |
|---|
using System.Linq;using System.Text;
public class CPHInline { public bool Execute() { // Hole alle User-Globals mit Key 'isLurking' var lurkers = CPH.GetUserGlobalsForVariable<bool>("isLurking", persisted: true) .Where(g => g.Value == true) .Select(g => g.UserName) .ToList();
if (!lurkers.Any()) { CPH.SetArgument("lurkerList", "Niemand lurkt gerade: alle sind aktiv 👀"); CPH.SetArgument("lurkerCount", 0); return true; }
// Maximal 15 Namen anzeigen damit die Message ins 500-Zeichen-Limit passt var displayed = lurkers.Take(15).ToList(); var rest = lurkers.Count - displayed.Count; var sb = new StringBuilder(string.Join(", ", displayed)); if (rest > 0) sb.Append($" und {rest} weitere");
CPH.SetArgument("lurkerList", sb.ToString()); CPH.SetArgument("lurkerCount", lurkers.Count); return true; }}Nach Ausführung gesetzt: %lurkerList% (Stringliste) und %lurkerCount% (Integer).
Bot postet die formatierte Liste mit Count-Vorspann.
| Message | 🌙 %lurkerCount% Lurker: %lurkerList% |
|---|---|
| Send using bot account | aktiv |
| Fallback to Broadcaster | aktiv |
| Feld | Wert |
|---|---|
| Name | !lurkers. Lurker-Liste |
| Group | Standard |
| Commands | !lurkers!lurkerlist |
| Text Matching Mode | Basic |
| Location | Start |
| Sources | Twitch Message |
| Ignore Bot Account | aktiv |
| User Cooldown | 60 |
| Global Cooldown | 30 |
Wenn du C# nicht nutzen willst, ist die Alternative ein zentraler “Lurker-Register”-Global den !lurk und !unlurk pflegen:
!lurk hängt %userName% an einen Global namens lurkerRegister an (mit Komma als Separator)!unlurk entfernt den Namen aus dem String via $replace()$!lurkers liest den Global und postet ihn direktVorteil: kein C#. Nachteil: String-Manipulation in Streamer.bot’s $replace()$ ist fehleranfällig bei ähnlichen Namen (bob matched auch bobby). Mit Trennzeichen-Padding (|bob|) lösbar, aber häßlich.
Wenn die Lurker-Liste interessant wird, zeig sie nicht nur passiv. Bot kann das im Recap des Streams nutzen:
Stream Offline-Event den finalen Lurker-Count loggen