From: Daniel Karbach Date: Fri, 28 Jun 2024 14:49:20 +0000 (+0200) Subject: add context to adlibs X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=c8a2f8ca5a615f5e07e35fb3926ef9d08ddb9cad;p=alttp.git add context to adlibs --- diff --git a/app/TwitchBot/TokenizedMessage.php b/app/TwitchBot/TokenizedMessage.php index 72817c1..f218e7a 100644 --- a/app/TwitchBot/TokenizedMessage.php +++ b/app/TwitchBot/TokenizedMessage.php @@ -50,6 +50,11 @@ class TokenizedMessage { } + public function getText() { + return $this->text; + } + + public function contains($text) { return Str::contains($this->text, $text); } @@ -286,7 +291,7 @@ class TokenizedMessage { $this->classification = 'cmd'; } else if ($this->isShort() && ($this->hasTokenThatStartsOrEndsWith(['gg']) || $this->hasEmoteThatEndsWith(['gg']))) { $this->classification = 'gg'; - } else if ($this->isShort() && $this->containsRaw(['glgl', 'glhf', 'goodluck', 'hfgl', 'vielglück'])) { + } else if ($this->isShort() && ($this->containsRaw(['glgl', 'glhf', 'goodluck', 'hfgl', 'vielglück']) || $this->hasToken('gl'))) { $this->classification = 'gl'; } else if ($this->hasToken(['danke', 'thanks', 'thx', 'ty']) && !$this->hasToken(['nah', 'nee', 'nein', 'no'])) { $this->classification = 'thx'; @@ -348,9 +353,9 @@ class TokenizedMessage { $this->hasConsecutiveTokens(['how', 'much']) || $this->hasConsecutiveTokens(['wie', 'viele']) ) { - return ['yes', 'no', 'kappa', 'lol', 'wtf', 'number']; + return ['yes', 'no', 'kappa', 'wtf', 'number']; } - return ['yes', 'no', 'kappa', 'lol', 'wtf']; + return ['yes', 'no', 'kappa', 'wtf']; case 'rage': return ['kappa', 'lol', 'rage']; case 'wtf': diff --git a/app/TwitchBot/TwitchChatBot.php b/app/TwitchBot/TwitchChatBot.php index 6ec517e..700de25 100644 --- a/app/TwitchBot/TwitchChatBot.php +++ b/app/TwitchBot/TwitchChatBot.php @@ -80,7 +80,7 @@ class TwitchChatBot extends TwitchBot { return; } $text = $this->contextualMsg($channel); - if ($this->shouldAdlib($channel)) { + if (!$text && $this->shouldAdlib($channel)) { $this->performAdlib($channel); return; } @@ -258,7 +258,8 @@ class TwitchChatBot extends TwitchBot { private function performAdlib(Channel $channel) { $db = $this->getChatlibDatabase($channel); - $text = $db->generate(); + $latest_msg = $this->getLatestMessage($channel); + $text = $db->generate($latest_msg->getText()); $this->tagChannelWrite($channel); $this->sendIRCMessage(IRCMessage::privmsg($channel->twitch_chat, $text)); $log = new ChatBotLog(); @@ -306,12 +307,10 @@ class TwitchChatBot extends TwitchBot { $tokenized = $msg->tokenize(); if (!ChatLog::isKnownBot($msg->nick) && !$tokenized->isSpammy()) { - $this->notes[$channel->id]['latest_msgs'][] = $tokenized; - if (count($this->notes[$channel->id]['latest_msgs']) > 10) { - array_shift($this->notes[$channel->id]['latest_msgs']); - } + $this->noteChannelMessage($channel, $tokenized); } if ($this->isDirectedAtMe($msg->getText()) && $this->shouldRespond($channel)) { + $this->noteChannelMessage($channel, $tokenized); $this->notes[$channel->id]['wait_msgs'] = 0; $this->notes[$channel->id]['wait_time'] = 0; $response = $tokenized->getResponseCategory(); @@ -321,6 +320,13 @@ class TwitchChatBot extends TwitchBot { } } + private function noteChannelMessage(Channel $channel, TokenizedMessage $tokenized) { + $this->notes[$channel->id]['latest_msgs'][] = $tokenized; + if (count($this->notes[$channel->id]['latest_msgs']) > 10) { + array_shift($this->notes[$channel->id]['latest_msgs']); + } + } + private function tagChannelWrite(Channel $channel) { $this->getNotes($channel); $this->notes[$channel->id]['last_write'] = time(); @@ -335,7 +341,7 @@ class TwitchChatBot extends TwitchBot { } private function getLatestMessage(Channel $channel) { - $this->getNotes($channel); + $notes = $this->getNotes($channel); if (!empty($notes['latest_msgs'])) { return $notes['latest_msgs'][count($notes['latest_msgs']) - 1]; }