-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathsettings.yaml
572 lines (567 loc) · 20 KB
/
settings.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
migrations:
- from: currency/honkos/database-url
to: currency/mysql/url
- from: song/youtube/support
to: song/youtube/enabled
- from: irc/startup-message
to: chat/join-message
- from: chat/leave-message
to: messages/leave-chat
- from: chat/join-message
to: messages/join-chat
- prefix: true
from: irc/
to: chat/
# ChaosMod effect names that can be configured.
gtav_options: >av-options
- {title: "Spawn Vehicle", value: "SpawnVehicle"}
- {title: "Spawn Random Vehicle", value: "SpawnRandomVehicle"}
- {title: "Kill Engine", value: "KillEngine"}
- {title: "Blow Tires", value: "BlowTires"}
- {title: "Repair", value: "Repair"}
- {title: "Give Weapon", value: "GiveWeapon"}
- {title: "Take Weapon", value: "TakeWeapon"}
- {title: "Take All Weapons", value: "TakeAllWeapons"}
- {title: "Stumble", value: "Stumble"}
- {title: "Fall", value: "Fall"}
- {title: "Clear Wanted Level", value: "ClearWanted"}
- {title: "Give Wanted Level", value: "Wanted"}
- {title: "Give Health", value: "GiveHealth"}
- {title: "Give Armor", value: "GiveArmor"}
- {title: "Take Health", value: "TakeHealth"}
- {title: "License", value: "License"}
- {title: "Randomize Color", value: "RandomizeColor"}
- {title: "Randomize Weather", value: "RandomizeWeather"}
- {title: "Randomize Character", value: "RandomizeCharacter"}
- {title: "Brake", value: "Brake"}
- {title: "Take Ammo", value: "TakeAmmo"}
- {title: "Give Ammo", value: "GiveAmmo"}
- {title: "Boost", value: "Boost"}
- {title: "Super Boost", value: "SuperBoost"}
- {title: "Super Speed", value: "SuperSpeed"}
- {title: "Super Swim", value: "SuperSwim"}
- {title: "Super Jump", value: "SuperJump"}
- {title: "Invincibility", value: "Invincibility"}
- {title: "Spawn Enemy", value: "SpawnEnemy"}
- {title: "Exploding Bullets", value: "ExplodingBullets"}
- {title: "Fire Ammo", value: "FireAmmo"}
- {title: "Exploding Punches", value: "ExplodingPunches"}
- {title: "Drunk", value: "Drunk"}
- {title: "Very Drunk", value: "VeryDrunk"}
- {title: "Set On Fire", value: "SetOnFire"}
- {title: "Set Peds On Fire", value: "SetPedsOnFire"}
- {title: "Make Peds Aggressive", value: "MakePedsAggressive"}
- {title: "Matrix Slam", value: "MatrixSlam"}
- {title: "Close Parachute", value: "CloseParachute"}
- {title: "Disable Control", value: "DisableControl"}
- {title: "Mod Vehicle", value: "ModVehicle"}
- {title: "Levitate", value: "Levitate"}
- {title: "Levitate Entities", value: "LevitateEntities"}
- {title: "Eject", value: "Eject"}
- {title: "Slow Down Time", value: "SlowDownTime"}
- {title: "Make Fireproof", value: "MakeFireProof"}
- {title: "Fuel Leakage", value: "FuelLeakage"}
- {title: "Change Current Vehicle", value: "ChangeCurrentVehicle"}
- {title: "Randomize Doors", value: "RandomizeDoors"}
- {title: "Skyfall", value: "Skyfall"}
- {title: "Taze", value: "Taze"}
- {title: "Taze Others", value: "TazeOthers"}
- {title: "Reduce Gravity", value: "ReduceGravity"}
- {title: "Raw", value: "Raw"}
types:
pubsub/enabled:
doc: >
If Twitch Pub/Sub support is enabled or not.
This is required to use points redemption features:
* `song/request-redemption`
type: {id: bool}
system/run-on-startup:
doc: >
If SetMod should run on startup.
type: {id: bool}
remote/check-interval:
doc: The interval at which to check for remote updates to connections.
type: {id: duration}
remote/api-url:
doc: Endpoint to use for sending API updates to. One is provided for free at `https://setbac.tv`.
type: {id: string, optional: true}
remote/secret-key:
doc: Secret key to use to authenticate against remote API.
type: {id: string, optional: true}
secret: true
remote/enabled:
title: Remote Updates
feature: true
doc: >
If remote updates are enabled.
For example, to update player information on <https://setbac.tv>.
type: {id: bool}
first-run:
doc: Indicates whether the bot has run at least once.
type: {id: bool}
gtav/command-configs:
doc: >
**Experimental** support for command-specific configuration overrides.
An example override looks like this: `{"name": "Wanted", "enabled": true, "cost": 10000, "cooldown": "5m"}`.
[Available names](https://github.com/udoprog/OxidizeBot/blob/main/bot/src/module/gtav.rs#L208).
type:
id: set
value:
id: object
fields:
- title: Enabled
field: enabled
type: {id: bool, optional: true}
- title: Name
field: name
type: {id: select, variant: "typeahead", value: {id: string}, options: *gtav-options}
- title: Cooldown
field: cooldown
type: {id: duration, optional: true}
- title: Cost
field: cost
type: {id: number, optional: true}
gtav/enabled:
title: ChaosMod
feature: true
doc: If the `!gtav` module is enabled.
type: {id: bool}
gtav/chat-prefix:
doc: Prefix to use when announcing effects.
type: {id: string}
gtav/cooldown:
doc: Global cooldown between each effect.
type: {id: duration}
gtav/punish-cooldown:
doc: Punishment cooldown between each effect.
type: {id: duration}
gtav/reward-cooldown:
doc: Reward cooldown between each effect.
type: {id: duration}
gtav/per-user-cooldown:
doc: Per-user cooldown between each effect.
type: {id: duration}
gtav/per-command-cooldown:
doc: Per-command cooldown between each effect.
type: {id: duration}
gtav/other%:
doc: Other effect cost scaling.
type: {id: percentage}
gtav/punish%:
doc: Punishment scaling.
type: {id: percentage}
gtav/reward%:
doc: Reward cost scaling.
type: {id: percentage}
gtav/success-feedback:
doc: If we should have chat feedback on successful commands.
type: {id: bool}
chat/sender-type:
doc: How to send messages to chat.
type:
id: select
value: {id: string}
options:
- {title: "Chat", value: "chat"}
- {title: "NightBot (requires Authentication)", value: "nightbot"}
chat/moderator-cooldown:
doc: How long we must wait between each moderator action.
type: {id: duration, optional: true}
chat/idle-detection/threshold:
doc: How many messages must be received before the channel is no longer considered idle.
type: {id: number}
chat/viewer-reward%:
doc: Scaling for viewer rewards.
type: {id: percentage}
chat/viewer-reward/enabled:
title: Viewer Rewards
feature: true
doc: If viewer rewards are enabled. If enabled, this will award viewers 1 unit of stream currency for every minute of watch time.
type: {id: bool}
chat/viewer-reward/interval:
doc: The interval at which we give out user rewards.
type: {id: duration}
chat/whitelisted-hosts:
doc: Hosts that are whitelisted for linking to in chat.
type: {id: set, value: {id: string}}
chat/url-whitelist/enabled:
title: URL whitelisting
feature: true
doc: If URL whitelisting is enabled in chat.
type: {id: bool}
chat/bad-words/enabled:
title: Bad-words filtering
feature: true
doc: If bad words filtering is enabled in chat (Experimental).
type: {id: bool}
chat/bad-words/path:
doc: Filesystem location of the bad words dictionary to use.
type: {id: string, optional: true}
migration/aliases-migrated:
doc: If aliases have been migrated from the configuration file.
type: {id: bool}
migration/whitelisted-hosts-migrated:
doc: If whitelisted hosts have been migrated from the configuration file.
type: {id: bool}
migration/themes-migrated:
doc: If themes have been migrated from the configuration file.
type: {id: bool}
player/fallback-uri:
doc: >
The fallback URI (Spotify) to use when no other songs are queued up.
Removing this setting causes the bot to use your starred songs.
Example: `spotify:playlist:1ZTlxhxQ4FGJdUMBEd9pn`
type: {id: string, optional: true}
player/duplicate-duration:
doc: The minimum amount of time that has to have been passed to allow adding a song that has already been queued.
type: {id: duration}
player/detached:
doc: If the player is detached, in that it can no longer control the music.
type: {id: bool}
scope: player/attach-detach
player/song-switch-feedback:
doc: Echo when the current song switches in chat.
type: {id: bool}
player/max-queue-length:
doc: The maximum queue length permitted in the player.
type: {id: number}
player/max-songs-per-user:
doc: The maximum number of songs that can be requested per user.
type: {id: number}
player/song-update-interval:
doc: The interval at which song updates are visible. Used in the Overlay.
type: {id: duration}
player/spotify/volume:
doc: Volume to use for the Spotify player.
type: {id: percentage}
player/spotify/volume-scale:
doc: Scaling to apply to volume. A value of 50% would mean that that would effectively be the maximum volume.
type: {id: percentage}
player/spotify/device:
doc: ID of the device configured for playback.
type: {id: string, optional: true}
player/youtube/volume:
doc: Volume to use for the YouTube player.
type: {id: percentage}
player/youtube/volume-scale:
doc: Scaling to apply to volume. A value of 50% would mean that that would effectively be the maximum volume.
type: {id: percentage}
player/song-file/enabled:
title: Song file
feature: true
doc: >
If file-based current song information is enabled.
type: {id: bool}
player/song-file/path:
doc: The path to write the current song information to.
type: {id: string, optional: true}
player/song-file/update-interval:
doc: How frequently the file is updated.
type: {id: duration}
player/song-file/template:
doc: Template to use for current song.
type: {id: text, optional: true}
player/song-file/stopped-template:
doc: Template to use when the player doesn't have any songs loaded.
type: {id: text, optional: true}
player/playback-mode:
doc: >
How playback is performed.
The available modes are:
* **Default** - Where the player uses the default method of playback.
* **Queue** - The player tries to use the Spotify queue instead of the
internal one. This has some limitations documented below.
**Queue** has the following limitations:
* Remote song updates will not be sent.
* We will not be able to maintain queue-based request limits, like
limiting a user to only be allowed to have a certain number of songs
in the queue.
* Fallback songs will not be used, instead it will use whatever is in
the player queue.
type:
id: select
value: {id: string}
options:
- {title: "Default", value: "default"}
- {title: "Queue (Spotify playback only)", value: "queue"}
promotions/enabled:
title: Promotions
feature: true
doc: If the `!promo` module is enabled.
type: {id: bool}
promotions/frequency:
doc: The highest frequency at which promotions are posted.
type: {id: duration}
swearjar/enabled:
title: Swear Jar
feature: true
doc: If the `!swearjar` module is enabled.
type: {id: bool}
swearjar/reward:
doc: The amount of currency each user is rewarded by the `!swearjar` command.
type: {id: number}
swearjar/cooldown:
doc: Minimum cooldown between each `!swearjar` invocation.
type: {id: duration}
secrets/oauth2/spotify/connection:
doc: Stored connection for Spotify authentication.
type: {id: raw, optional: true}
secret: true
secrets/oauth2/twitch-bot/connection:
doc: Stored connection for Twitch Bot authentication.
type: {id: raw, optional: true}
secret: true
secrets/oauth2/twitch-streamer/connection:
doc: Stored connection for Twitch Streamer authentication.
type: {id: raw, optional: true}
secret: true
secrets/oauth2/youtube/connection:
doc: Stored connection for YouTube authentication.
type: {id: raw, optional: true}
secret: true
secrets/oauth2/nightbot/connection:
doc: Stored connection for NightBot authentication.
type: {id: raw, optional: true}
secret: true
song/enabled:
title: Song Requests
feature: true
doc: If the `!song` module is enabled.
type: {id: bool}
song/chat-feedback:
doc: If song feedback is visible in chat or not.
type: {id: bool}
song/request-reward:
doc: Fixed reward that anyone gets for requesting songs.
type: {id: number}
song/subscriber-only:
doc: If only subscribers can request songs.
type: {id: bool}
song/spotify/enabled:
title: Spotify Song Requests
feature: true
doc: If we accept Spotify song requests.
type: {id: bool}
song/spotify/min-currency:
doc: >
The minimum amount of stream currency required to request Spotify songs.
Setting this value to anything by `0` requires that stream currency is configured.
type: {id: number}
song/spotify/max-duration:
doc: >
The longest duration we will accept for a Spotify songs. Any longer will be capped.
Remove this value to allow requests of any length.
type: {id: duration, optional: true}
song/spotify/subscriber-only:
doc: >
If only subscribers can request songs from Spotify.
**Deprecated** in favor of `song/spotify` scope (see Authentication).
type: {id: bool, optional: true}
song/youtube/enabled:
title: YouTube Song Requests
feature: true
doc: If we accept YouTube song requests (Experimental).
type: {id: bool}
song/youtube/min-currency:
doc: >
The minimum amount of stream currency required to request YouTube songs.
Setting this value to anything by `0` requires that stream currency is configured.
type: {id: number}
song/youtube/max-duration:
doc: >
The longest duration we will accept for a YouTube video. Any longer will be capped.
Remove this value to allow requests of any length.
type: {id: duration, optional: true}
song/youtube/min-currency:
doc: >
The minimum amount of stream currency required to request YouTube songs.
Remove this value to allow requests of any length.
type: {id: number}
song/youtube/subscriber-only:
doc: >
If only subscribers can request songs from YouTube.
**Deprecated** in favor of `song/spotify` scope (see Authentication).
type: {id: bool, optional: true}
song/request-redemption:
doc: >
The title of a points redemption that can be used to request songs.
Requires Twitch Pub/Sub support to be enbled through `pubsub/enabled`.
type: {id: string, optional: true}
water/enabled:
title: Water Reminders
feature: true
doc: If the `!water` module is enabled.
type: {id: bool}
water/cooldown:
doc: Cooldown between each `!water` command.
type: {id: duration}
water/reward%:
doc: Reward scaling for doing a water reminder.
type: {id: percentage}
countdown/enabled:
title: Countdowns
feature: true
doc: If the `!countdown` module is enabled.
type: {id: bool}
countdown/path:
doc: The path used for writing the countdown.
type: {id: string, optional: true}
currency/type:
doc: The type of the stream currency. Decides the backend implementation.
type:
id: select
value: {id: string}
options:
- {title: "Built-In", value: "builtin"}
- {title: "MySQL", value: "mysql"}
- {title: "Honkos", value: "honkos"}
currency/mysql/url:
doc: >
The database URL to connect to for the `mysql` or `honkos` backend.
Expected: `mysql://<user>:<password>@<host>/<database>`.
type:
id: string
optional: true
placeholder: "mysql://<user>:<password>@<host>/<database>"
format: {type: "regex", pattern: "^mysql:\\/\\/(.+:.+@)?.+/.+$"}
secret: true
currency/mysql/schema:
doc: Custom schema to use for `mysql` type backends.
type: {id: raw}
currency/enabled:
title: Stream Currency
feature: true
doc: If stream currency is enabled.
type: {id: bool}
currency/command-enabled:
title: Stream Currency Command
feature: true
doc: >
If the `!<currency>` command is enabled.
This is used to for example check your balance or transfer funds.
type: {id: bool}
currency/name:
doc: The name used for the current stream currency.
type: {id: string, optional: true}
currency/notify-rewards:
doc: Send a global notification on viewer rewards.
type: {id: bool}
obs/url:
doc: The URL to use when connecting to OBS.
type: {id: string, optional: true}
uptime/enabled:
title: Uptime Command
feature: true
doc: If the `!uptime` command is enabled.
type: {id: bool}
game/enabled:
title: Game Command
feature: true
doc: If the `!game` command is enabled.
type: {id: bool}
title/enabled:
title: Title Command
feature: true
doc: If the `!title` command is enabled.
type: {id: bool}
afterstream/enabled:
title: After Streams
feature: true
doc: If the `!afterstream` command is enabled.
type: {id: bool}
afterstream/cooldown:
doc: Required cooldown between each `!afterstream` call.
type: {id: duration}
clip/enabled:
title: Clip Command
feature: true
doc: If the `!clip` command is enabled.
type: {id: bool}
clip/cooldown:
doc: Required cooldown between each `!clip` call.
type: {id: duration}
8ball/enabled:
title: 8 Ball Command
feature: true
doc: If the `!8ball` command is enabled.
type: {id: bool}
command/enabled:
title: Command Administration
feature: true
doc: If the `!command` command is enabled. It's used for custom command administration.
type: {id: bool}
speedrun/enabled:
title: speedrun.com command
feature: true
doc: If the `!speedrun` command is enabled.
type: {id: bool}
speedrun/top:
doc: "How many top runs to fetch (default: 20)."
type: {id: number}
time/enabled:
title: Time Command
feature: true
doc: If the `!time` command is enabled.
type: {id: bool}
time/timezone:
doc: Time zone for the `!time` command.
type: {id: "time-zone"}
time/template:
doc: Template to use as a response.
type: {id: string}
poll/enabled:
title: Polling
feature: true
doc: If the `!poll` command is enabled.
type: {id: bool}
weather/enabled:
title: Weather Information
feature: true
doc: If the `!weather` command is enabled.
type: {id: bool}
weather/api-key:
doc: API-key to [OpenWeatherMap](https://openweathermap.org). You'll have to register an account.
type: {id: string, optional: true}
secret: true
weather/temperature-unit:
doc: Temperature unit to use.
type:
id: select
value: {id: string}
options:
- {title: "Degrees Celsius (°C)", value: "degrees-celsius"}
- {title: "Degrees Fahrenheit (°F)", value: "degrees-fahrenheit"}
- {title: "Kelvin (K)", value: "kelvin"}
weather/location:
doc: Default location to use. Like `New York`, or `Stockholm`.
type: {id: string, optional: true}
chat-log/enabled:
doc: Store a number of messages in the chat log (experimental).
type: {id: bool}
chat-log/emotes-enabled:
doc: Render emotes in the chat log (experimental).
type: {id: bool}
help/enabled:
title: Help Command
feature: true
doc: >
If the `!help` command is enabled or not.
type: {id: bool}
help/url:
title: Documentation URL
doc: >
The URL to base the `!help` command from.
Default is <https://setbac.tv>.
type: {id: string}
messages/join-chat:
doc: Message to send when the bot joins your channel.
type: {id: string, optional: true}
messages/leave-chat:
doc: Message to send when the bot leaves your channel.
type: {id: string, optional: true}
messages/auth-failed:
doc: Message to send if a moderator tries to do something unauthorized.
type: {id: string, optional: true}
messages/auth-failed-rude:
doc: Message to send if a regular user tries to do something unauthorized.
type: {id: string, optional: true}