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Одне альтернативне ім'я
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Лише повідомлення, які акаунт може редагувати

Вміст

ПолеТипДія
RegexstringТекст має збігтися. Компілюється під час реєстрації; некоректний шаблон кладе реєстрацію
StartsWithstringТекст має починатися з цього
EndsWithstringТекст має закінчуватися цим
ContainsstringТекст має містити це

Інше

ПолеТипДія
RatelimitboolЗастосовувати ліміти за користувачем і чатом
Filterfunc(*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 спрацьовує лише в групі, лише як відповідь, ніколи на пересланому повідомленні й з обмеженням частоти.

Released under the GNU AGPL v3 License.