]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/ChannelController.php
twitch chat bot controls
[alttp.git] / app / Http / Controllers / ChannelController.php
index 904cb8ff81ebc0833fc7912aeae96a10edae2ef5..b735a6f70b3e3e6fcc45c0df81dfd9446af970e9 100644 (file)
@@ -42,14 +42,36 @@ class ChannelController extends Controller {
                return $channel->toJson();
        }
 
+       public function chat(Request $request, Channel $channel) {
+               if (!$channel->twitch_chat) {
+                       throw new \Exception('channel has no twitch chat set');
+               }
+               $validatedData = $request->validate([
+                       'bot_nick' => 'string',
+                       'text' => 'string|required',
+               ]);
+               $this->authorize('editRestream', $channel);
+               $nick = empty($validatedData['bot_nick']) ? 'localhorsttv' : $validatedData['bot_nick'];
+               TwitchBotCommand::chat($channel->twitch_chat, $validatedData['text'], $request->user(), $nick);
+               return $channel->toJson();
+       }
+
        public function join(Request $request, Channel $channel) {
                if (!$channel->twitch_chat) {
                        throw new \Exception('channel has no twitch chat set');
                }
+               $validatedData = $request->validate([
+                       'bot_nick' => 'string',
+               ]);
                $this->authorize('editRestream', $channel);
-               $channel->join = true;
+               $nick = empty($validatedData['bot_nick']) ? 'localhorsttv' : $validatedData['bot_nick'];
+               if ($nick == 'localhorsttv') {
+                       $channel->join = true;
+               } else if ($nick == 'horstiebot') {
+                       $channel->chat = true;
+               }
                $channel->save();
-               TwitchBotCommand::join($channel->twitch_chat);
+               TwitchBotCommand::join($channel->twitch_chat, $request->user(), $nick);
                return $channel->toJson();
        }
 
@@ -57,10 +79,18 @@ class ChannelController extends Controller {
                if (!$channel->twitch_chat) {
                        throw new \Exception('channel has no twitch chat set');
                }
+               $validatedData = $request->validate([
+                       'bot_nick' => 'string',
+               ]);
                $this->authorize('editRestream', $channel);
-               $channel->join = false;
+               $nick = empty($validatedData['bot_nick']) ? 'localhorsttv' : $validatedData['bot_nick'];
+               if ($nick == 'localhorsttv') {
+                       $channel->join = false;
+               } else if ($nick == 'horstiebot') {
+                       $channel->chat = false;
+               }
                $channel->save();
-               TwitchBotCommand::part($channel->twitch_chat);
+               TwitchBotCommand::part($channel->twitch_chat, $request->user(), $nick);
                return $channel->toJson();
        }