Ir para o conteúdo principal

Chat plugin commands

Declare uma tabela de comandos para comandos como !uptime ou !so. Tabelas de comandos suportam aliases, controle de moderador, cooldowns por usuário, argumentos analisados, e listas automáticas de !help. Veja chat basics para a carga útil da mensagem de chat, envio de mensagens e filtros.

Registrar uma tabela de comandos

Uma tabela de comandos fornece:

  • um prefixo de comando configurável, com ! como padrão
  • descrição, uso, e aliases por comando
  • cooldowns por usuário
  • controle de moderador apenas com base nos escopos do remetente
  • análise de argumentos
  • uma lista automática de !help
const { definePlugin } = require('@owncast/plugin-sdk');

module.exports = definePlugin({
commandPrefix: '!', // optional
commands: {
uptime: {
description: "How long we've been live",
run: ctx => ctx.reply("we've been live a while!"),
},
so: {
description: 'Shout out a viewer',
usage: '!so <name>',
aliases: ['shoutout'],
cooldownMs: 10_000,
run: ctx => ctx.reply(`go follow ${ctx.args[0] || 'someone cool'}`),
},
clear: {
description: 'Clear the chat',
modOnly: true,
run: ctx => ctx.replyPrivately('done'),
},
},
});

Os manipuladores de JavaScript recebem msg, user, command, invokedAs, args, argString, reply e replyPrivately. Python usa invoked_as, arg_string e reply_privately.

Nomes de comandos duplicados são permitidos, assim todos os plugins que correspondem são executados. Comandos desconhecidos, invocações com controle de moderador e invocações limitadas por cooldown são silenciosos. Declarar ou receber um comando não requer permissão. Ações dentro do manipulador ainda requerem suas permissões habituais, como chat.send.

!help é automático, mas não reservado

Owncast publica uma mensagem de sistema listando descrições de comandos de cada plugin habilitado. Comandos exclusivos de moderador permanecem ocultos de não-moderadores. Essa resposta interna não precisa de permissão de plugin.

!help e seu alias !commands permanecem mensagens de chat comuns. Plugins também podem declarar ou responder a eles. A resposta interna não bloqueia respostas de plugins adicionais.

A resposta !help no chat, listando os comandos que um plugin habilitado fornece com suas descrições, agrupados por plugin

Usando manipuladores de chat e filtros comuns

Uma tabela de comandos é opcional. Um plugin pode inspecionar msg.body em um manipulador onChatMessage para um único comando fixo. Comandos feitos manualmente não aparecem na listagem de ajuda interna.

Mensagens de comando permanecem mensagens comuns do chat, então um plugin pode usar tanto uma tabela de comandos quanto um manipulador de chat comum. Filtros de chat são executados antes da correspondência de comandos. Uma mensagem descartada por um filtro não executa qualquer comando declarado.

Plugins de exemplo

  • mod-commands (JavaScript, Python): um prefixo ? customizado com aliases, cooldowns e controle de moderador.
  • stream-tracker (JavaScript, Python): uma tabela de comandos com !uptime e !who, além de rastreamento de atividade de stream e usuário de chat.
  • stream-ops (JavaScript, Python): uma tabela de comandos que relata telemetria de transmissão e vídeo.
  • timer-bot (JavaScript, Python): uma tabela de comandos para lembretes e contagens regressivas (!remind, !every, !countdown).
  • ip-bot (JavaScript, Python): um único comando !ip respondido com o IP público do servidor.
  • relay (JavaScript, Python): re-emite /announce \<texto> como um anúncio de transmissão.

Para onde ir a seguir


Improve this page

See something missing or incorrect? Edit this page and improve the documentation for everyone.

Contributors to this documentation