Skip to content

CommandMeta

コマンドのフィルタとエイリアス。任意インターフェース ModuleWithMeta で宣言します。

go
func (m *Weather) CommandMetas() map[string]goroku.CommandMeta {
	return map[string]goroku.CommandMeta{
		"weather": {
			Aliases:   []string{"w"},
			OnlyOwner: true,
		},
	}
}

ディスパッチャはこれをハンドラの実行に適用します。フィルタに合わない コマンドは、そもそも発火しません。

同じ構造体が WatcherMetas() でウォッチャーの設定にも使われ、Watchers() が返す スライスと位置で対応します。

名前

フィールド効果
Aliasstring別名を1つ
Aliases[]string別名を複数

エイリアスは全モジュールのコマンドと同じ名前空間を共有します。衝突は登録を失敗 させ、黙って覆い隠すことはありません。

誰が

フィールド効果
OnlyOwnerアカウント所有者のみ。本人かどうかだけを見て、sudo・マスク・一時付与は無視
FromID許可する送信者 ID の []int64

どこで

フィールド効果
OnlyPM個人チャットのみ
NoPM個人チャットでは動かさない
OnlyGroupsグループのみ
OnlyChannelsチャンネルのみ
OnlyChats個人チャット以外のみ
ChatID許可するチャット ID の []int64

添付

フィールド効果
OnlyMedia何らかの添付を必須に
OnlyPhotos写真を必須に
OnlyVideos動画を必須に
OnlyAudios音声を必須に
OnlyDocs文書を必須に
OnlyStickersステッカーを必須に
NoMedia添付を拒否
NoStickersステッカーを拒否
NoAudio音声を拒否
NoDoc文書を拒否

メッセージの形

フィールド効果
OnlyReply返信先メッセージを必須に
NoReply返信を拒否
NoForwarded転送メッセージを拒否
Mentionメンションを必須に
NoMentionメンションを拒否
OnlyCommandsコマンドであるメッセージのみ
NoCommandsコマンドを拒否
OnlyInlineインライン経由のみ
NoInlineインラインを拒否
Editableこのアカウントが編集できるメッセージのみ

内容

フィールド効果
Regexstringテキストが一致すること。登録時にコンパイルされ、不正なパターンは登録を失敗させます
StartsWithstringこれで始まること
EndsWithstringこれで終わること
Containsstringこれを含むこと

その他

フィールド効果
Ratelimitbool利用者別・チャット別のレート制限を適用
Filterfunc(*Message) bool任意の述語。最後に実行されます
go
"weather": {
	Filter: func(msg *goroku.Message) bool {
		return len(msg.Text) < 200
	},
},

組み合わせ

設定されたフィールドはすべて満たす必要があります(AND 結合)。

go
"purge": {
	Aliases:     []string{"p"},
	OnlyGroups:  true,
	OnlyReply:   true,
	NoForwarded: true,
	Ratelimit:   true,
},

これで .purge は、グループでのみ、返信としてのみ、転送メッセージでは決して 発火せず、レート制限も掛かります。

Released under the GNU AGPL v3 License.