diff --git a/src/lib/commands/built-in/block-term.ts b/src/lib/commands/built-in/block-term.ts new file mode 100644 index 00000000..4487f593 --- /dev/null +++ b/src/lib/commands/built-in/block-term.ts @@ -0,0 +1,18 @@ +import { CommandError } from "$lib/errors/command-error"; +import { ErrorMessage } from "$lib/errors/messages"; +import { defineCommand } from "../util"; + +export default defineCommand({ + provider: "Built-in", + name: "block-term", + description: "Block a term and prevent it from being used in chat", + modOnly: true, + args: ["term"], + async exec(args, channel) { + if (!args[0]) { + throw new CommandError(ErrorMessage.MISSING_ARG(this.args[0])); + } + + await channel.blockTerm(args.join(" ")); + }, +}); diff --git a/src/lib/models/channel.svelte.ts b/src/lib/models/channel.svelte.ts index ba95f1ba..bef414b3 100644 --- a/src/lib/models/channel.svelte.ts +++ b/src/lib/models/channel.svelte.ts @@ -235,6 +235,22 @@ export class Channel { return data; } + public async blockTerm(term: string) { + if (!app.user?.moderating.has(this.id)) { + return; + } + + await this.client.post("/moderation/blocked_terms", { + params: { + broadcaster_id: this.id, + moderator_id: app.user.id, + }, + body: { + text: term, + }, + }); + } + public async raid(to: string) { if (!app.user?.moderating.has(this.id)) { return;