跳至主要内容

Chat plugin commands

声明一个指令表用于指令,如 !uptime!so。 指令表 支持别名、管理员限制、每用户冷却、解析参数和 自动 !help 列表。 请查看 聊天基础 获取聊天 消息负载、发送消息和过滤器。

注册一个指令表

指令表提供:

  • 一个可配置的指令前缀,默认为 !
  • 每个指令的 描述用法别名
  • 每用户冷却时间
  • 基于发送者权限的管理员专用限制
  • 参数解析
  • 自动 !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'),
},
},
});

JavaScript 处理程序接收 msgusercommandinvokedAsargsargStringreplyreplyPrivately。 Python 使用 invoked_asarg_stringreply_privately

允许重复的指令名称,以便每个匹配的插件均可运行。 未知指令、管理员限制的调用和冷却限制的调用 是静默的。 声明或接收指令无须权限。 处理程序中的操作仍然需要其通常的权限,例如 chat.send

!help 是自动的,但不是保留的

Owncast 发布系统消息列出每个启用的插件的指令描述。 仅限管理员的指令对非管理员用户隐藏。 此内置 响应不需要插件权限。

!help 及其 !commands 别名仍然是普通聊天消息。 插件也可以声明或响应它们。 内置响应不会阻塞其他 插件响应。

聊天中的 !help 响应,列出启用的插件提供的指令及其描述,按插件分组

使用普通聊天处理程序和过滤器

指令表是可选的。 插件可以在 onChatMessage 处理程序中检查 msg.body 以获取单个固定指令。 手动指令不会出现在内置帮助列表中。

指令消息仍然是普通聊天消息,因此插件可以同时使用 指令表和普通聊天处理程序。 聊天过滤器在指令 匹配之前运行。 被过滤器丢弃的消息不会执行任何声明的指令。

示例插件

  • mod-commands (JavaScript, Python): 带有别名、冷却时间和管理员限制的自定义 ? 前缀。
  • stream-tracker (JavaScript, Python): 带有 !uptime!who 的指令表,此外还跟踪流和聊天用户活动。
  • stream-ops (JavaScript, Python): 报告广播和视频遥测的指令表。
  • timer-bot (JavaScript, Python): 用于提醒和倒计时的指令表(!remind!every!countdown)。
  • ip-bot (JavaScript, Python): 用服务器的公共 IP 回应单个 !ip 指令。
  • relay (JavaScript, Python): 将 /announce \<text> 重新广播为公告。

接下来该去哪里

  • 聊天插件 获取聊天消息负载、发送消息和过滤器。
  • 处理程序参考 获取您的插件可以订阅的聊天事件。
  • API 参考 获取每个 owncast.* 方法及其需要的权限。

Improve this page

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

Contributors to this documentation