X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FTwitchBot%2FTwitchChatBot.php;h=479a9ab5eef2ebd5e793c2421e5959e9f4f972bc;hb=13ffde5b2abcf831af9c794044350737066c5933;hp=aacc56fc11f2aa0e410787be739eab776136aacf;hpb=6a643908d58f26272c2095616514a140e7c0b4c0;p=alttp.git diff --git a/app/TwitchBot/TwitchChatBot.php b/app/TwitchBot/TwitchChatBot.php index aacc56f..479a9ab 100644 --- a/app/TwitchBot/TwitchChatBot.php +++ b/app/TwitchBot/TwitchChatBot.php @@ -3,6 +3,7 @@ namespace App\TwitchBot; use App\Models\Channel; +use App\Models\ChatBotLog; use App\Models\ChatLog; use Illuminate\Support\Arr; use Illuminate\Support\Str; @@ -74,8 +75,16 @@ class TwitchChatBot extends TwitchBot { $text = $this->contextualMsg($channel); if (!$text) $text = $this->randomChat($channel); if (!$text) return; + $actual_text = is_object($text) ? $text->text_content : $text; $this->tagChannelWrite($channel); - $this->sendIRCMessage(IRCMessage::privmsg($channel->twitch_chat, $text)); + $this->sendIRCMessage(IRCMessage::privmsg($channel->twitch_chat, $actual_text)); + $log = new ChatBotLog(); + $log->channel()->associate($channel); + if (is_object($text)) { + $log->origin()->associate($text); + } + $log->text = $actual_text; + $log->save(); } private function getNotes(Channel $channel) { @@ -123,7 +132,7 @@ class TwitchChatBot extends TwitchBot { } private function contextualMsg(Channel $channel) { - $last = $this->getNote($channel, 'last_special'); + $last = $this->getLastSpecialSent($channel); $classifications = $this->collectClassifications($channel); $count_quotas = [ 'gg' => 2, @@ -131,19 +140,23 @@ class TwitchChatBot extends TwitchBot { 'hi' => 2, 'hype' => 2, 'lol' => 2, + 'love' => 2, 'number' => 2, 'pog' => 2, 'o7' => 2, + 'wtf' => 2, ]; $time_quotas = [ - 'gg' => 300, + 'gg' => 600, 'gl' => 900, 'hi' => 60, 'hype' => 60, 'lol' => 60, + 'love' => 60, 'number' => 300, 'pog' => 60, 'o7' => 300, + 'wtf' => 60, ]; foreach ($classifications as $classification => $count) { if ($classification == $last) continue; @@ -162,10 +175,9 @@ class TwitchChatBot extends TwitchBot { } private function randomChat(Channel $channel) { - $line = $channel->queryChatlog() + return $channel->queryChatlog() ->whereIn('classification', ['hi', 'hype', 'lol', 'pog', 'unclassified']) ->first(); - return $line->text_content; } private function randomContextualNumber(Channel $channel) { @@ -183,6 +195,9 @@ class TwitchChatBot extends TwitchBot { } private function randomLaughter(Channel $channel) { + if (!random_int(0, 2)) { + return $channel->randomOfClass('lol'); + } return Arr::random([ ':tf:', '4Head', @@ -193,7 +208,6 @@ class TwitchChatBot extends TwitchBot { 'GunRun', 'heh', 'Hhhehehe', - 'HypeLUL', 'Jebaited', 'Jebasted', 'KEKW', @@ -212,13 +226,11 @@ class TwitchChatBot extends TwitchBot { 'SUBprise', 'xD', 'YouDontSay', - $channel->randomOfClass('lol'), ]); } private function randomMsg(Channel $channel) { - $line = $channel->queryChatlog()->first(); - return $line->text_content; + return $channel->queryChatlog()->first(); } private function randomWaitMsgs(Channel $channel) { @@ -264,6 +276,19 @@ class TwitchChatBot extends TwitchBot { $this->notes[$channel->id]['last_special'][$classification] = time(); } + private function getLastSpecialSent(Channel $channel) { + $notes = $this->getNotes($channel); + $max_time = 0; + $max_classification = ''; + foreach ($notes['last_special'] as $classification => $time) { + if ($time > $max_time) { + $max_time = $time; + $max_classification = $classification; + } + } + return $max_classification; + } + private function getTimeSinceSpecial(Channel $channel, $classification) { $notes = $this->getNotes($channel); if (isset($notes['last_special'][$classification])) {