CommandMeta
Фільтри та аліаси команди. Оголошується через необов'язковий інтерфейс ModuleWithMeta:
go
func (m *Weather) CommandMetas() map[string]goroku.CommandMeta {
return map[string]goroku.CommandMeta{
"weather": {
Aliases: []string{"w"},
OnlyOwner: true,
},
}
}Диспетчер застосовує це до запуску вашого обробника. Команда, чиї фільтри не збіглися, просто не спрацьовує.
Та сама структура налаштовує вотчери через WatcherMetas(), зіставляючись за позицією зі слайсом із Watchers().
Імена
| Поле | Тип | Дія |
|---|---|---|
Alias | string | Одне альтернативне ім'я |
Aliases | []string | Кілька альтернативних імен |
Аліаси ділять єдиний простір імен із командами всіх модулів. Колізія кладе реєстрацію, а не перекриває команду мовчки.
Хто
| Поле | Дія |
|---|---|
OnlyOwner | Лише власник акаунта. Перевіряється лише особа — sudo, маски й тимчасові видачі ігноруються |
FromID | []int64 дозволених ID відправників |
Де
| Поле | Дія |
|---|---|
OnlyPM | Лише приватні чати |
NoPM | Ніколи в приватних чатах |
OnlyGroups | Лише групи |
OnlyChannels | Лише канали |
OnlyChats | Лише не-приватні чати |
ChatID | []int64 дозволених ID чатів |
Вкладення
| Поле | Дія |
|---|---|
OnlyMedia | Вимагати будь-яке вкладення |
OnlyPhotos | Вимагати фото |
OnlyVideos | Вимагати відео |
OnlyAudios | Вимагати аудіо |
OnlyDocs | Вимагати документ |
OnlyStickers | Вимагати стікер |
NoMedia | Відхиляти будь-які вкладення |
NoStickers | Відхиляти стікери |
NoAudio | Відхиляти аудіо |
NoDoc | Відхиляти документи |
Форма повідомлення
| Поле | Дія |
|---|---|
OnlyReply | Вимагати відповідь на повідомлення |
NoReply | Відхиляти відповіді |
NoForwarded | Відхиляти переслані |
Mention | Вимагати згадку |
NoMention | Відхиляти згадки |
OnlyCommands | Лише повідомлення-команди |
NoCommands | Відхиляти команди |
OnlyInline | Лише через інлайн |
NoInline | Відхиляти інлайн |
Editable | Лише повідомлення, які акаунт може редагувати |
Вміст
| Поле | Тип | Дія |
|---|---|---|
Regex | string | Текст має збігтися. Компілюється під час реєстрації; некоректний шаблон кладе реєстрацію |
StartsWith | string | Текст має починатися з цього |
EndsWith | string | Текст має закінчуватися цим |
Contains | string | Текст має містити це |
Інше
| Поле | Тип | Дія |
|---|---|---|
Ratelimit | bool | Застосовувати ліміти за користувачем і чатом |
Filter | func(*Message) bool | Довільний предикат; виконується останнім |
go
"weather": {
Filter: func(msg *goroku.Message) bool {
return len(msg.Text) < 200
},
},Комбінування
Усі задані поля мають пройти — вони об'єднуються за «І».
go
"purge": {
Aliases: []string{"p"},
OnlyGroups: true,
OnlyReply: true,
NoForwarded: true,
Ratelimit: true,
},Тепер .purge спрацьовує лише в групі, лише як відповідь, ніколи на пересланому повідомленні й з обмеженням частоти.