メインコンテンツへスキップ

Chat plugin commands

!uptime!soなどのコマンドのためにコマンドテーブルを宣言します。 コマンドテーブルは、エイリアス、モデレーターゲート、ユーザーごとのクールダウン、解析された引数、および自動的な!helpリストをサポートします。 チャットメッセージのペイロード、メッセージ送信、フィルターについてはチャットの基本を参照してください。

コマンドテーブルを登録する

コマンドテーブルは以下を提供します:

  • !をデフォルトとする設定可能なコマンドプレフィックス
  • コマンドごとのdescriptionusage、およびaliases
  • ユーザーごとのクールダウン
  • 送信者のスコープに基づくモデレーターのみのゲート
  • 引数解析
  • 自動的な!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ハンドラーはmsgusercommandinvokedAsargsargStringreply、およびreplyPrivatelyを受け取ります。 Pythonはinvoked_asarg_string、およびreply_privatelyを使用します。

重複するコマンド名が許可されており、すべての一致するプラグインが実行されます。 不明なコマンド、モデレーターが制限された呼び出し、およびクールダウン制限のある呼び出しは サイレントです。 コマンドを宣言または受信するのに権限は必要ありません。 ハンドラー内のアクションは、chat.sendのような通常の権限を必要とします。

!helpは自動ですが予約されていません

Owncastは、有効なプラグインからのコマンド説明をリストしたシステムメッセージを投稿します。 モデレーター専用のコマンドは、非モデレーターには隠れたままです。 このビルトインの 応答はプラグインの権限を必要としません。

!helpおよびその!commandsエイリアスは、通常のチャットメッセージのままです。 プラグインもそれらを宣言または応答することができます。 ビルトインの応答は追加の プラグイン応答をブロックしません。

チャット内での!help応答は、有効なプラグインが提供するコマンドとその説明をリストします

通常のチャットハンドラーとフィルターの使用

コマンドテーブルはオプションです。 プラグインは、単一の固定コマンドのためにonChatMessageハンドラー内でmsg.bodyを検査できます。 手動で作成されたコマンドは、ビルトインのヘルプリストには表示されません。

コマンドメッセージは通常のチャットメッセージのままです。したがって、プラグインはコマンドテーブルと通常のチャットハンドラーの両方を使用できます。 チャットフィルターはコマンド マッチングの前に実行されます。 フィルターによってドロップされたメッセージは、宣言されたコマンドを実行しません。

例のプラグイン

  • mod-commands (JavaScriptPython):エイリアス、クールダウン、およびモデレーター制限のあるカスタム?プレフィックス。
  • stream-tracker (JavaScriptPython):!uptime!whoを持つコマンドテーブル、さらにストリームとチャットユーザーのアクティビティ追跡。
  • stream-ops (JavaScriptPython):ブロードキャストとビデオのTelemetryを報告するコマンドテーブル。
  • timer-bot (JavaScriptPython):リマインダーとカウントダウンのためのコマンドテーブル(!remind!every!countdown)。
  • ip-bot (JavaScriptPython):サーバーのパブリックIPで応答する単一の!ipコマンド。
  • relay (JavaScriptPython):/announce \<text>をブロードキャスト発表として再送信します。

次に行く場所


Improve this page

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

Contributors to this documentation