]> git.localhorst.tv Git - alttp.git/commitdiff
improved twitch bot controls
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 9 Aug 2026 10:42:46 +0000 (12:42 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 9 Aug 2026 10:42:46 +0000 (12:42 +0200)
app/Http/Controllers/ChannelController.php
app/TwitchBot/TwitchChatBot.php
resources/js/components/twitch-bot/ChatSettingsForm.jsx
resources/js/i18n/de.js
resources/js/i18n/en.js

index d7bc398fa4a096d4f08fda2c9166d1c74ad3cd2c..859c01885ae90f1c485a4f839f484fa02bf44c1a 100644 (file)
@@ -114,7 +114,7 @@ class ChannelController extends Controller {
                        'adlib' => 'integer|min:0|max:100',
                        'language' => 'string|in:de,en,es,fr',
                        'min_age' => 'integer|min:1',
-                       'respond' => 'string|in:50,no,yes',
+                       'respond' => 'string|in:25,50,75,no,yes',
                        'source' => 'string|in:any,cat,catchan,chan',
                        'wait_msgs_min' => 'integer|min:1',
                        'wait_msgs_max' => 'integer|min:1',
index 5443394e1fa3795cef5e62fd24eeb17ccf974c9d..389beaed48beeb94a73fad905810c5a1c23e1bbe 100644 (file)
@@ -421,8 +421,11 @@ class TwitchChatBot extends TwitchBot {
                if ($setting == 'yes') {
                        return true;
                }
-               if ($setting == '50') {
-                       return random_int(0, 1);
+               if ($setting == 'no') {
+                       return true;
+               }
+               if (is_numeric($setting)) {
+                       return random_int(0, 100) <= intval($setting);
                }
                return false;
        }
index 5810a3fe72c6f9716198132a5d9fa5b24509fa34..c18b9353a8ddc40c5520c0175b77782c0963622c 100644 (file)
@@ -115,7 +115,7 @@ const ChatSettingsForm = ({
                                        onChange={handleChange}
                                        value={values.respond || 'yes'}
                                >
-                                       {['yes', '50', 'no'].map(value =>
+                                       {['yes', '75', '50', '25', 'no'].map(value =>
                                                <option key={value} value={value}>
                                                        {t(`twitchBot.respondOptions.${value}`)}
                                                </option>
@@ -171,8 +171,11 @@ const ChatSettingsForm = ({
                                        onChange={handleChange}
                                        type="number"
                                        value={Object.prototype.hasOwnProperty.call(values, 'adlib')
-                                               ? values.adlib : 50}
+                                               ? values.adlib : 5}
                                />
+                               <Form.Text className="text-muted">
+                                       {t('twitchBot.chatAdlibExplanation')}
+                               </Form.Text>
                        </Form.Group>
                </Row>
                <div className="button-bar mt-3">
index 0a6c638e5a68a1c0193b8e2ac22cec1e38a06e59..95ce1da08e30ab7c0679187cb232227fe5f1228f 100644 (file)
@@ -1020,6 +1020,7 @@ export default {
                        channel: 'Channel',
                        chat: 'Chat',
                        chatAdlibChance: 'ad lib Chance',
+                       chatAdlibExplanation: 'Generiert Nachrichten via Markov Chains basierend auf allen Quellen (wie a_n_i_v oder sg_viewer).',
                        chatCategories: {
                                adlib: 'ad lib',
                                eyes: 'Augen',
@@ -1135,7 +1136,9 @@ export default {
                        randomChat: 'Random Chat',
                        respond: 'Antworten',
                        respondOptions: {
+                               25: '25%',
                                50: '50:50',
+                               75: '75%',
                                no: 'Nein',
                                yes: 'Ja',
                        },
index c371c3bfbeb8539bd0f3931685a31d492d6d3955..5e0de85d02e075e8d1aa95254cf92478a6b6c086 100644 (file)
@@ -1021,6 +1021,7 @@ export default {
                        channel: 'Channel',
                        chat: 'Chat',
                        chatAdlibChance: 'ad lib chance',
+                       chatAdlibExplanation: 'Generates messages via Markov chains based on all Sources (like a_n_i_v or sg_viewer).',
                        chatCategories: {
                                adlib: 'ad lib',
                                eyes: 'Eyes',
@@ -1136,7 +1137,9 @@ export default {
                        randomChat: 'Random Chat',
                        respond: 'Respond',
                        respondOptions: {
+                               25: '25%',
                                50: '50:50',
+                               75: '75%',
                                no: 'No',
                                yes: 'Yes',
                        },