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.