Zum Inhalt springen
  • Dunkel
  • Hell
  • System

!quoteby

!quoteby

Pro

!quotefrom

Sucht eine zufällige Quote die der Target-User geprägt hat. Wie !searchquote, aber gefiltert nach %quoteUser%.

Steps
4
Cooldown
30s/User
Cooldown
10sglobal
Zugriff
Public

Schwester-Command zu !searchquote. Gleicher C#-Pattern, anderer Filter.

Set Argument: Target säubern

Core Arguments Set Argument
Variable Name targetLogin
Value $replace(%input0%, @, )$

If/Else: Kein Target

Core Logic If/Else
Input %targetLogin%
Operation Is Null or Empty
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message @%user% nutze !quoteby @username
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

Execute Code. Quote-Search by User

Core C# Code Execute C# Code

Filtert Quotes wo UserName matched, picked Random aus den Matches.

public class CPHInline
{
public bool Execute()
{
string target = args["targetLogin"].ToString().ToLower();
var quotes = CPH.GetQuotes();
var matches = quotes.Where(q => q.UserName.ToLower() == target).ToList();
if (matches.Count == 0)
{
CPH.SetArgument("foundQuoteMatch", "false");
return true;
}
var pick = matches[new Random().Next(matches.Count)];
CPH.SetArgument("foundQuote", pick.Quote);
CPH.SetArgument("foundQuoteId", pick.Id);
CPH.SetArgument("foundQuoteUser", pick.UserName);
CPH.SetArgument("foundQuoteGame", pick.Game);
CPH.SetArgument("foundQuoteTime", pick.CreatedAt.ToString("dd.MM.yyyy"));
CPH.SetArgument("foundQuoteCount", matches.Count.ToString());
CPH.SetArgument("foundQuoteMatch", "true");
return true;
}
}

If/Else: Kein Match

Core Logic If/Else
Input %foundQuoteMatch%
Operation Equals
Value false
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message @%user% Keine Quote von @%targetLogin% gefunden.
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

Send Message: Match

Twitch Chat Send Message to Channel
Message 📝 Quote #%foundQuoteId% von %foundQuoteUser%: „%foundQuote%“: %foundQuoteGame% (%foundQuoteTime%) · %foundQuoteCount% Quote(s) total
AzaBot: 📝 Quote #34 von @Alice: „Skill Issue, Boss.“. Sekiro (15.04.2025) · 7 Quote(s) total
So sieht's im Chat aus
  1. 1 Set Argument: targetLogin = $replace(...)
  2. 2 If/Else: %targetLogin% Is Null or Empty
    1. Then 2a Send Message: Hilfe
    2. Then 2b Break
  3. 3 Execute Code (C#): Filter by User, pick Random
  4. 4 If/Else: %foundQuoteMatch% Equals false
    1. Then 4a Send Message: Keine Quote
    2. Then 4b Break
  5. 5 Send Message: 📝 Match
FeldWert
Name!quoteby
Commands!quoteby
!quotefrom
User Cooldown30
Global Cooldown10
  • UserName ist Quote-Author, nicht Quote-Mention: Wenn jemand zitiert wurde aber nicht in UserName steht, findet’s !quoteby nicht. Hat der Streamer den Quote-Author beim Adden bewusst gesetzt? Standard ist %user% beim Add.
  • Case-Sensitivity: Lowercase-Vergleich. Funktioniert für „azazeli“, „Azazeli“, „AZAZELI“.
  • No Display-Name: Falls Quote ohne UserName gespeichert wurde: kein Match möglich.
  • Stats per User: !quotestats @user zeigt nur Count + erste/letzte Quote-Datum.
  • Top-Authors: !quoteauthors listet die Top-5 User mit den meisten Quotes (Loop + Dictionary in C#).