From: Daniel Karbach Date: Fri, 12 Apr 2024 20:03:31 +0000 (+0200) Subject: better yes classification X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=60243d0284acc3ef886c0f7a60116a881c207bb0;p=alttp.git better yes classification --- diff --git a/app/TwitchBot/TokenizedMessage.php b/app/TwitchBot/TokenizedMessage.php index b03e219..46f4a44 100644 --- a/app/TwitchBot/TokenizedMessage.php +++ b/app/TwitchBot/TokenizedMessage.php @@ -67,10 +67,18 @@ class TokenizedMessage { return Str::endsWith($this->emoteless, $text); } + public function endsWithEmotelessToken($text) { + return !empty($this->emoteless_tokens) && $this->tokens[count($this->emoteless_tokens) - 1] == $text; + } + public function endsWithRaw($text) { return Str::endsWith($this->raw, $text); } + public function endsWithToken($text) { + return !empty($this->tokens) && $this->tokens[count($this->tokens) - 1] == $text; + } + public function getNumericValue() { return intval($this->text); } @@ -185,10 +193,18 @@ class TokenizedMessage { return $this->startsWith($text) || $this->endsWith($text); } + public function startsOrEndsWithEmotelessToken($text) { + return $this->startsWithEmotelessToken($text) || $this->endsWithEmotelessToken($text); + } + public function startsOrEndsWithRaw($text) { return $this->startsWithRaw($text) || $this->endsWithRaw($text); } + public function startsOrEndsWithToken($text) { + return $this->startsWithToken($text) || $this->endsWithToken($text); + } + public function startsWith($text) { return Str::startsWith($this->text, $text); } @@ -197,10 +213,18 @@ class TokenizedMessage { return Str::startsWith($this->emoteless, $text); } + public function startsWithEmotelessToken($text) { + return isset($this->emoteless_tokens[0]) && $this->emoteless_tokens[0] == $text; + } + public function startsWithRaw($text) { return Str::startsWith($this->raw, $text); } + public function startsWithToken($text) { + return isset($this->tokens[0]) && $this->tokens[0] == $text; + } + public function isSpammy() { if ($this->startsWith('!')) { @@ -254,7 +278,7 @@ class TokenizedMessage { $this->classification = 'sweat'; } else if ($this->endsWithEmoteless('?')) { $this->classification = 'question'; - } else if ($this->hasToken(['ja', 'jo', 'yep', 'yes']) || $this->containsRaw('nodders') || $this->hasEmoteThatEndsWith(['nod', 'nodders', 'yea'])) { + } else if ($this->hasToken(['jo', 'yep', 'yes']) || $this->startsOrEndsWithEmotelessToken('ja') || $this->containsRaw('nodders') || $this->hasEmoteThatEndsWith(['nod', 'nodders', 'yea'])) { $this->classification = 'yes'; } else if ($this->hasToken(['nah', 'nee', 'nein', 'no']) || $this->containsRaw('nopers') || $this->hasEmoteThatEndsWith(['nay', 'nope', 'nopers'])) { $this->classification = 'no'; diff --git a/tests/Unit/TwitchBot/TokenizedMessageTest.php b/tests/Unit/TwitchBot/TokenizedMessageTest.php index b957746..1af6bb2 100644 --- a/tests/Unit/TwitchBot/TokenizedMessageTest.php +++ b/tests/Unit/TwitchBot/TokenizedMessageTest.php @@ -71,6 +71,10 @@ class TokenizedMessageTest extends TestCase { $this->assertEquals('wtf', TokenizedMessage::fromString('wtf? lol')->classify()); $this->assertNotEquals('wtf', TokenizedMessage::fromString('ein waterwalk aufgesetzt')->classify()); + $this->assertEquals('yes', TokenizedMessage::fromString('ja geht SeemsGood')->classify()); + $this->assertEquals('yes', TokenizedMessage::fromString('also ich würde sagen ja LUL', ['emotes' => 'blah:25-27'])->classify()); + $this->assertNotEquals('yes', TokenizedMessage::fromString('find ich ja gut')->classify()); + $this->assertEquals('unclassified', TokenizedMessage::fromString('')->classify()); $this->assertEquals('unclassified', TokenizedMessage::fromString('bitte boots locked in desert und bib')->classify()); }