Forbidden words comment field.

This commit is contained in:
John Livingston 2023-09-25 13:16:15 +02:00
parent 06b9417650
commit b8aef07182
No known key found for this signature in database
GPG Key ID: B17B5640CE66CDBC
8 changed files with 51 additions and 3 deletions

View File

@ -55,6 +55,8 @@ declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_LABEL: s
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_REGEXP_DESC: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_LABEL: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_LABEL: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_DESC: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_LABEL: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_DESC: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_DESC: string
declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_CMD_LABEL: string declare const LOC_LIVECHAT_CONFIGURATION_CHANNEL_COMMAND_CMD_LABEL: string

View File

@ -101,6 +101,16 @@
/> />
<p class="form-group-description">{{forbiddenWordsReasonDesc}}</p> <p class="form-group-description">{{forbiddenWordsReasonDesc}}</p>
</div> </div>
<div class="form-group">
<label for="peertube-livechat-forbidden-words-comments-{{fieldNumber}}">{{forbiddenWordsComments}}</label>
{{! warning: don't add extra line break in textarea! }}
<textarea
name="forbidden_words_comments_{{fieldNumber}}"
id="peertube-livechat-forbidden-words-comments-{{fieldNumber}}"
class="form-control"
>{{comments}}</textarea>
<p class="form-group-description">{{forbiddenWordsCommentsDesc}}</p>
</div>
</div> </div>
</div> </div>
{{/forbiddenWordsArray}} {{/forbiddenWordsArray}}

View File

@ -91,6 +91,12 @@ async function fillLabels (
view.forbiddenWordsApplyToModeratorsDesc = await peertubeHelpers.translate( view.forbiddenWordsApplyToModeratorsDesc = await peertubeHelpers.translate(
LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_APPLYTOMODERATORS_DESC
) )
view.forbiddenWordsComments = await peertubeHelpers.translate(
LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_LABEL
)
view.forbiddenWordsCommentsDesc = await peertubeHelpers.translate(
LOC_LIVECHAT_CONFIGURATION_CHANNEL_FORBIDDEN_WORDS_COMMENTS_DESC
)
view.quoteLabel = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_LABEL) view.quoteLabel = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_LABEL)
view.quoteDesc = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_DESC) view.quoteDesc = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_DESC)
view.quoteDesc2 = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_DESC2) view.quoteDesc2 = await peertubeHelpers.translate(LOC_LIVECHAT_CONFIGURATION_CHANNEL_QUOTE_DESC2)

View File

@ -43,7 +43,8 @@ async function getConfigurationChannelViewData (
joinedEntries: fw.entries.join('\n'), joinedEntries: fw.entries.join('\n'),
regexp: !!fw.regexp, regexp: !!fw.regexp,
applyToModerators: fw.applyToModerators, applyToModerators: fw.applyToModerators,
reason: fw.reason reason: fw.reason,
comments: fw.comments
}) })
} }
// Ensuring we have at least N blocks: // Ensuring we have at least N blocks:
@ -57,7 +58,8 @@ async function getConfigurationChannelViewData (
joinedEntries: '', joinedEntries: '',
regexp: false, regexp: false,
applyToModerators: false, applyToModerators: false,
reason: '' reason: '',
comments: ''
}) })
continue continue
} }
@ -231,6 +233,7 @@ async function vivifyConfigurationChannel (
const regexp = data.get('forbidden_words_regexp_' + i.toString()) const regexp = data.get('forbidden_words_regexp_' + i.toString())
const applyToModerators = data.get('forbidden_words_applytomoderators_' + i.toString()) const applyToModerators = data.get('forbidden_words_applytomoderators_' + i.toString())
const reason = data.get('forbidden_words_reason_' + i.toString())?.toString() const reason = data.get('forbidden_words_reason_' + i.toString())?.toString()
const comments = data.get('forbidden_words_comments_' + i.toString())?.toString()
const fw: ChannelConfigurationOptions['bot']['forbiddenWords'][0] = { const fw: ChannelConfigurationOptions['bot']['forbiddenWords'][0] = {
entries, entries,
applyToModerators: !!applyToModerators, applyToModerators: !!applyToModerators,
@ -239,6 +242,9 @@ async function vivifyConfigurationChannel (
if (reason) { if (reason) {
fw.reason = reason fw.reason = reason
} }
if (comments) {
fw.comments = comments
}
channelConfigurationOptions.bot.forbiddenWords.push(fw) channelConfigurationOptions.bot.forbiddenWords.push(fw)
} }

View File

@ -336,6 +336,10 @@ livechat_configuration_channel_forbidden_words_applytomoderators_label: "Also m
livechat_configuration_channel_forbidden_words_applytomoderators_desc: | livechat_configuration_channel_forbidden_words_applytomoderators_desc: |
By default, moderator messages will not be deleted when containing forbidden words. By default, moderator messages will not be deleted when containing forbidden words.
By checking this option, messages from moderators will also be deleted. By checking this option, messages from moderators will also be deleted.
livechat_configuration_channel_forbidden_words_comments_label: "Comments"
livechat_configuration_channel_forbidden_words_comments_desc: |
You can add here some comments about this rule, to remember how and why you created it.
These comments are purely indicative, and have no influence on the bot's behavior.
livechat_configuration_channel_quote_label: "Pre-recorded messages" livechat_configuration_channel_quote_label: "Pre-recorded messages"
livechat_configuration_channel_quote_desc: | livechat_configuration_channel_quote_desc: |
You can configure several pre-recorded messages. You can configure several pre-recorded messages.

View File

@ -105,6 +105,19 @@ function _readStringArray (data: any, f: string): string[] {
return result return result
} }
function _readMultiLineString (data: any, f: string): string {
if (!(f in data)) {
return ''
}
if (typeof data[f] !== 'string') {
throw new Error('Invalid data type for field ' + f)
}
// Removing control characters.
// eslint-disable-next-line no-control-regex
const s = (data[f] as string).replace(/[\u0000-\u001F\u007F-\u009F]/g, '')
return s
}
async function _readRegExpArray (data: any, f: string): Promise<string[]> { async function _readRegExpArray (data: any, f: string): Promise<string[]> {
// Note: this function can instanciate a lot of RegExp. // Note: this function can instanciate a lot of RegExp.
// To avoid freezing the server, we make it async, and will validate each regexp in a separate tick. // To avoid freezing the server, we make it async, and will validate each regexp in a separate tick.
@ -153,12 +166,14 @@ async function _readForbiddenWords (botData: any): Promise<ChannelConfigurationO
} }
const applyToModerators = _readBoolean(fw, 'applyToModerators') const applyToModerators = _readBoolean(fw, 'applyToModerators')
const reason = fw.reason ? _readSimpleInput(fw, 'reason') : undefined const reason = fw.reason ? _readSimpleInput(fw, 'reason') : undefined
const comments = fw.comments ? _readMultiLineString(fw, 'comments') : undefined
result.push({ result.push({
regexp, regexp,
entries, entries,
applyToModerators, applyToModerators,
reason reason,
comments
}) })
} }
return result return result

View File

@ -61,6 +61,7 @@ interface ChannelConfigurationOptions {
regexp?: boolean regexp?: boolean
applyToModerators?: boolean applyToModerators?: boolean
reason?: string reason?: string
comments?: string
}> }>
quotes: Array<{ quotes: Array<{
messages: string[] messages: string[]

View File

@ -52,3 +52,7 @@ By checking this option, each line of the "{{% livechat_label livechat_configura
## {{% livechat_label livechat_configuration_channel_forbidden_words_reason_label %}} ## {{% livechat_label livechat_configuration_channel_forbidden_words_reason_label %}}
{{% livechat_label livechat_configuration_channel_forbidden_words_reason_desc %}} {{% livechat_label livechat_configuration_channel_forbidden_words_reason_desc %}}
## {{% livechat_label livechat_configuration_channel_forbidden_words_comments_label %}}
{{% livechat_label livechat_configuration_channel_forbidden_words_comments_desc %}}