]> git.localhorst.tv Git - alttp.git/commitdiff
better yes classification
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 12 Apr 2024 20:03:31 +0000 (22:03 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 12 Apr 2024 20:03:31 +0000 (22:03 +0200)
app/TwitchBot/TokenizedMessage.php
tests/Unit/TwitchBot/TokenizedMessageTest.php

index b03e2192eca4948273047cad7c6ea59c5b2a83c1..46f4a4495f1758816ac03c214b7843eda0bbf2ce 100644 (file)
@@ -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';
index b9577466a691addd9c1e6ff6900aafe8b677b55a..1af6bb2efab17e6f0c6634f4121250c313384021 100644 (file)
@@ -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());
        }