Raydium Framework

SpamDetector
in package

Standalone spam detection service.

Analyzes content for spam patterns including:

  • Cyrillic characters
  • Mixed-language phrases (Cyrillic + English keywords)
  • Suspicious keywords (Unicode-safe matching)
Tags
TODO:

Implement score-based detection for more nuanced spam filtering

Table of Contents

$mixedLanguageWords  : array<string|int, string>
$suspiciousKeywords  : array<string|int, string>
__construct()  : mixed
analyze()  : array<string|int, null|bool|string|string[]>
Analyze content for spam patterns.
flattenContent()  : string
Flatten nested array or string into a single string for analysis.
isSpam()  : bool
Quick check - returns true if content is spam.
setKeywords()  : self
setMixedLanguageWords()  : self
containsCyrillicCharacters()  : bool
Check if content contains Cyrillic characters.
containsMixedLanguagePhrases()  : bool
Check if content contains mixed Cyrillic and English spam phrases.
findSuspiciousKeyword()  : null|string
Find suspicious keywords in content (Unicode-safe).

Properties

$mixedLanguageWords

private array<string|int, string> $mixedLanguageWords

$suspiciousKeywords

private array<string|int, string> $suspiciousKeywords

Methods

__construct()

public __construct([array<string|int, string> $suspiciousKeywords = [] ][, array<string|int, string> $mixedLanguageWords = [] ]) : mixed
Parameters
$suspiciousKeywords : array<string|int, string> = []
$mixedLanguageWords : array<string|int, string> = []
Return values
mixed

analyze()

Analyze content for spam patterns.

public analyze(string $content) : array<string|int, null|bool|string|string[]>

Detection order (most specific to least specific):

  1. Suspicious keywords (exact matches)
  2. Mixed-language phrases (Cyrillic + English spam patterns)
  3. Cyrillic characters (broad catch-all)
Parameters
$content : string

The content to analyze

Tags
psalm-return

array{is_spam: bool, reason: 'Cyrillic characters detected'|'Mixed-language phrase detected'|'Suspicious keyword detected'|null, matches: list{0?: 'cyrillic'|'keyword'|'mixed_language', 1?: string}}

Return values
array<string|int, null|bool|string|string[]>

flattenContent()

Flatten nested array or string into a single string for analysis.

public flattenContent(array<string|int, mixed>|string $value) : string
Parameters
$value : array<string|int, mixed>|string
Return values
string

isSpam()

Quick check - returns true if content is spam.

public isSpam(string $content) : bool
Parameters
$content : string
Return values
bool

setKeywords()

public setKeywords(array<string|int, string> $keywords) : self
Parameters
$keywords : array<string|int, string>
Return values
self

setMixedLanguageWords()

public setMixedLanguageWords(array<string|int, string> $words) : self
Parameters
$words : array<string|int, string>
Return values
self

containsCyrillicCharacters()

Check if content contains Cyrillic characters.

private containsCyrillicCharacters(string $content) : bool
Parameters
$content : string
Return values
bool

containsMixedLanguagePhrases()

Check if content contains mixed Cyrillic and English spam phrases.

private containsMixedLanguagePhrases(string $content) : bool
Parameters
$content : string
Return values
bool

findSuspiciousKeyword()

Find suspicious keywords in content (Unicode-safe).

private findSuspiciousKeyword(string $content) : null|string
Parameters
$content : string
Return values
null|string

The matched keyword, or null if none found

Search results