X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FTwitchBot%2FTwitchBot.php;h=242ac927021dfd6edace3e196f95f3f36ec87448;hb=refs%2Fheads%2Fmaster;hp=63f4236f685e92bf659610257e93177a78cf7a11;hpb=17d105b4d07ce544e94b7f90ff7f50feb86b244f;p=alttp.git diff --git a/app/TwitchBot/TwitchBot.php b/app/TwitchBot/TwitchBot.php index 63f4236..242ac92 100644 --- a/app/TwitchBot/TwitchBot.php +++ b/app/TwitchBot/TwitchBot.php @@ -118,6 +118,10 @@ class TwitchBot { $this->handlePrivMsg($msg); return; } + if ($msg->isWhisper()) { + $this->handleWhisper($msg); + return; + } if ($msg->isNotice() && $msg->getText() == 'Login authentication failed') { $this->logger->notice('login failed, refreshing access token'); $this->token->refresh(); @@ -130,6 +134,11 @@ class TwitchBot { $this->ready = true; return; } + if ($msg->command == 'GLOBALUSERSTATE') { + // receive own user metadata + $this->handleUserState($msg); + return; + } } public function getMessageChannel(IRCMessage $msg) { @@ -146,6 +155,15 @@ class TwitchBot { public function handlePrivMsg(IRCMessage $msg) { } + public function handleUserState(IRCMessage $msg) { + if (isset($msg->tags['user-id'])) { + $this->user_id = $msg->tags['user-id']; + } + } + + public function handleWhisper(IRCMessage $msg) { + } + public function login() { $this->ws->send('PASS oauth:'.$this->token->access); $this->ws->send('NICK '.$this->nick); @@ -172,6 +190,20 @@ class TwitchBot { $this->last_contact = time(); } + public function sendWhisper($to, $msg) { + $this->logger->info('sending whisper to '.$to.': '.$msg); + try { + $response = $this->token->request()->post('/whispers?from_user_id='.$this->user_id.'&to_user_id='.$to, [ + 'message' => $msg, + ]); + if (!$response->successful()) { + $this->logger->error('sending whisper to '.$to.': '.$response->status()); + } + } catch (\Exception $e) { + $this->logger->error('sending whisper to '.$to.': '.$e->getMessage()); + } + } + protected function listenCommands() { $this->getLoop()->addPeriodicTimer(1, function () { @@ -191,6 +223,7 @@ class TwitchBot { private $nick; private $token; + private $user_id = ''; private $connector; private $ws;