1 Greeter
ppfeiffer edited this page 2026-04-19 14:57:37 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Greeter

Der Greeter begrüßt neue Nutzer automatisch mit einer konfigurierbaren Nachricht, wenn sie zum ersten Mal auf einem überwachten Kanal schreiben.

Features

  • Automatische Erstbegrüßung (keine Keyword-Eingabe nötig)
  • Optionale Mesh-Statistik in der Begrüßung ({total_contacts}, {repeaters}, …)
  • Mehrteilige Nachrichten (Pipe-getrennt |) für gestaffelte Begrüßungen
  • Kanal-spezifische Begrüßungstexte
  • Rollout-Modus: Bestehende Nutzer schrittweise begrüßen (z. B. nach Aktivierung)
  • Backfill: Bereits gesehene Nutzer aus der Nachrichtenhistorie als „gegrüßt" markieren
  • Dead-Air-Delay: Wartet, ob ein Mensch begrüßt, bevor der Bot antwortet
  • Levenshtein-Ähnlichkeit: Erkennt Nutzer trotz leicht geänderter ID

Konfiguration

[Greeter_Command]
enabled = true

# Begrüßungstext  Platzhalter: {sender}
greeting_message = Willkommen im Mesh, {sender}! Du bist das erste Mal hier.

# Mesh-Info anhängen?
include_mesh_info = true
mesh_info_format = \n\n📡 Mesh: {total_contacts} Kontakte, {repeaters} Repeater

# Mehrteilige Begrüßung (Pipe-getrennt, werden als separate Nachrichten gesendet)
# greeting_message = Hallo {sender}, willkommen!|Hier ein paar Infos zum Mesh…

# Kanäle auf denen der Greeter aktiv ist (leer = alle monitor_channels)
channels = Public,#dd-ping

# Kanal-spezifische Begrüßungen
# channel_greetings = Public:Willkommen im Public-Kanal, {sender}!

# Nur einmal global (false) oder einmal pro Kanal (true)?
per_channel_greetings = false

# Rollout: Vorhandene Nutzer über N Tage nachträglich begrüßen (0 = deaktiviert)
rollout_days = 0

# Backfill beim Start: Bereits gesehene Nutzer als gegrüßt markieren?
auto_backfill = false
backfill_lookback_days = 30

# Warte N Sekunden, ob ein Mensch zuerst begrüßt (0 = sofort)
dead_air_delay_seconds = 0

# Begrüßung zurückhalten wenn ein anderer Nutzer bereits gegrüßt hat?
defer_to_human_greeting = false

# Levenshtein-Distanz für ähnliche IDs (0 = exakt)
levenshtein_distance = 0

Template-Variablen

Variable Bedeutung
{sender} Sender-ID des neuen Nutzers
{total_contacts} Gesamtzahl bekannter Kontakte im Mesh
{repeaters} Anzahl aktiver Repeater
{companions} Anzahl Companion-Nodes
{recent_activity_24h} Aktive Kontakte der letzten 24h

Rollout-Modus

Beim erstmaligen Aktivieren des Greeters wurden alle bisherigen Nutzer noch nie begrüßt. Der Rollout sendet die Begrüßung schrittweise über mehrere Tage:

rollout_days = 7       # Verteile alle Begrüßungen über 7 Tage
auto_backfill = true   # Nutzer aus den letzten 30 Tagen als gegrüßt markieren

Mit auto_backfill = true werden Nutzer aus dem konfigurierten Zeitfenster beim Start als bereits gegrüßt markiert — verhindert Spam bei Reaktivierung.

Web-Viewer

Der Greeter ist unter /greeter im Web-Viewer sichtbar:

  • Liste der gegrüßten Nutzer (Zeitpunkt, Kanal)
  • Rollout-Status und Fortschritt
  • Manuelles Aufheben einer Begrüßung (re-greet)

Technische Details

  • Tracking in der Tabelle greeted_users (sender_id, channel, Zeitstempel)
  • Trigger: jede eingehende Kanal-Nachricht (message_handler.py)
  • Kein Keyword notwendig — läuft parallel zu allen anderen Commands
  • Rate-Limit: nutzt globalen Bot-TX-Limiter