]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/ChannelController.php
chat bot settings
[alttp.git] / app / Http / Controllers / ChannelController.php
index f6840f87f837f27e94dc36d4dad096d8d4a4ba17..f1f3cdbeb4038da5cc8b12a7dc9b2b6060645ea2 100644 (file)
@@ -42,14 +42,52 @@ 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 chatSettings(Request $request, Channel $channel) {
+               if (!$channel->twitch_chat) {
+                       throw new \Exception('channel has no twitch chat set');
+               }
+               $validatedData = $request->validate([
+                       'wait_msgs_min' => 'integer|min:1',
+                       'wait_msgs_max' => 'integer',
+                       'wait_time_min' => 'integer',
+                       'wait_time_max' => 'integer',
+               ]);
+               $this->authorize('editRestream', $channel);
+               $channel->chat_settings = $validatedData;
+               $channel->save();
+               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, $request->user());
+               TwitchBotCommand::join($channel->twitch_chat, $request->user(), $nick);
                return $channel->toJson();
        }
 
@@ -57,10 +95,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, $request->user());
+               TwitchBotCommand::part($channel->twitch_chat, $request->user(), $nick);
                return $channel->toJson();
        }