+
+ {{ editingIndex !== null ? t('addon.custom-commands.sources.edit-source', 'Edit Custom Source') : t('addon.custom-commands.sources.new-source', 'New Custom Source') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.bot-names-hint', 'Comma-separated list of bot usernames to detect in chat') }}
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.channel-names-hint', 'Comma-separated list of channels where these commands are available') }}
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.url-hint', 'Use {channel} for channel login, {channelId} for channel ID') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.path-hint', 'JSON path to command name (e.g., "name" or "data.command")') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.channel-url-hint', 'URL to fetch channel ID if needed. Use {channel} placeholder.') }}
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.channel-id-path-hint', 'Path to channel ID in channel API response') }}
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.description-path-hint', 'Path to command description in API response') }}
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.permission-path-hint', 'Path to permission level in API response') }}
+
+
+
+
+
+
+
+
+
+ {{ t('addon.custom-commands.sources.prefix-in-name-hint', 'Check if command names include the prefix (e.g., "!ping" instead of "ping")') }}
+
+
+
+
+
+ {{ validationError }}
+
+
+
+
+
+
+