Skip to content

Справочник API

Полный список всех публичных функций и типов пакета wasmplugin.

Точка входа

ФункцияОписание
Run(p Plugin)Точка входа - вызывать из main()

Функции Host API

ФункцияСигнатураТребование
sql.Open("superbot", name) (*sql.DB, error)Database(desc)
HTTPRequest(method, url string, headers map[string]string, body string) (*HTTPResponse, error)HTTP(desc)
HTTPRequestFor(requirement, method, url string, headers map[string]string, body string) (*HTTPResponse, error)HTTP(desc)
HTTPGet(url string) (*HTTPResponse, error)HTTP(desc)
HTTPPost(url, contentType, body string) (*HTTPResponse, error)HTTP(desc)
CallPlugin(target, method string, params interface{}) ([]byte, error)PluginDep(target, desc)
CallPluginInto(target, method string, params interface{}, out interface{}) errorPluginDep(target, desc)
CallPluginRaw(target, method string, rawParams []byte) ([]byte, error)PluginDep(target, desc)
PublishEvent(topic string, payload interface{}) errorEventsReq(desc)
PublishEventRawJSON(topic string, payload []byte) errorEventsReq(desc)

Методы EventContext

Сообщения

МетодСигнатура
Reply(msg Message)

HTTP-ответы

МетодСигнатура
SetHTTPResponse(statusCode int, headers map[string]string, body string)
JSON(statusCode int, v interface{})

Логирование

МетодСигнатура
Log(msg string)
LogError(msg string)

Данные

МетодСигнатураОписание
Config(key, fallback string) stringЗначение конфигурации
Param(key string) stringПараметр команды
Locale() stringЛокаль пользователя
HasFiles() boolЕсть ли прикреплённые файлы
Files() []FileRefСписок прикреплённых файлов
FileMeta(fileID string) (*FileRef, error)Метаданные файла
FileRead(fileID string, offset, maxBytes int64) ([]byte, bool, error)Чтение чанками
FileReadAll(fileID string) ([]byte, error)Чтение файла целиком
FileURL(fileID string) (string, error)Временная ссылка на скачивание
FileStore(name, mimeType, fileType string, data []byte) (*FileRef, error)Сохранение файла
FileStoreWithTTL(name, mimeType, fileType string, data []byte, ttl time.Duration) (*FileRef, error)Сохранение файла с TTL

Уведомления

МетодСигнатураТребование
NotifyUser(userID int64, text string, priority int) errornotify
NotifyChat(channelType, chatID, text string, priority int) errornotify
NotifyStudents() *StudentNotifyBuildernotify

StudentNotifyBuilder

МетодОписание
.Faculty(id int64)Scope: факультет
.Department(id int64)Scope: кафедра
.Program(id int64)Scope: направление
.Stream(id int64)Scope: поток
.Group(id int64)Scope: учебная группа
.Subgroup(id int64)Scope: подгруппа
.Message(msg Message)Сообщение (rich content)
.Priority(p int)Приоритет (по умолчанию PriorityNormal)
.Send() errorОтправить

KV Store

МетодСигнатураТребование
KVGet(key string) (string, bool, error)kv
KVSet(key, value string) errorkv
KVSetWithTTL(key, value string, ttl time.Duration) errorkv
KVDelete(key string) errorkv
KVList(prefix string) ([]string, error)kv

Конструкторы схемы конфигурации

ФункцияОписание
ConfigFields(fields...)Создать схему конфигурации
String(key, desc)Строковое поле
Integer(key, desc)Целочисленное поле
Number(key, desc)Числовое поле (float)
Bool(key, desc)Булево поле
StringArray(key, desc)Массив строк
Enum(key, desc, values...)Перечисление
HTTPPolicyConfig()Готовая схема policy для HTTP requirement

Модификаторы полей

МетодОписание
.Default(v)Значение по умолчанию
.Required()Обязательное поле
.Min(n) / .Max(n)Мин/макс значение (Number/Integer)
.MinLen(n) / .MaxLen(n)Мин/макс длина строки
.Pattern(re)Regex-валидация
.Sensitive()Поле-пароль в UI

Конструкторы требований

ФункцияРазрешениеОписание
Database(desc)sqlДоступ к базе данных (имя "default")
HTTP(desc)networkHTTP-запросы
KV(desc)kvKey-value хранилище
NotifyReq(desc)notifyОтправка уведомлений
EventsReq(desc)eventsПубликация событий
PluginDep(target, desc)plugins:call:<target>Вызов другого плагина
File(desc)fileДоступ к файловому хранилищу

Методы RequirementBuilder

МетодОписание
.Name(n)Логическое имя ресурса (для Database — алиас БД, по умолчанию "default")
.WithConfig(cs)Дополнительная конфигурация для требования
.Build()Финализация требования

Node-конструкторы

ФункцияОписание
NewStep(param)Создать шаг команды
Opt(label, value)Создать опцию

Методы StepBuilder

МетодОписание
.Text(text, style)Добавить текстовый блок
.LocalizedText(texts, style)Локализованный текстовый блок
.Options(prompt, opts...)Статические опции
.LocalizedOptions(prompts, ...Option)Локализованные опции
.DynamicOptions(prompt, fn)Динамические опции (callback)
.PaginatedOptions(prompt, pageSize, fn)Пагинированные опции
.LocalizedDynamicOptions(prompts, fn)Динамические опции с локализованным prompt
.LocalizedPaginatedOptions(prompts, pageSize, fn)Пагинированные опции с локализованным prompt
.Link(url, label)Ссылка
.Image(url)Картинка
.Validate(regex)Regex-валидация ввода
.ValidateFunc(fn)Callback-валидация ввода
.VisibleWhen(cond)Декларативное условие видимости
.VisibleWhenFunc(fn)Callback-условие видимости

Ветвление

ФункцияОписание
BranchOn(param, cases...)Ветвление по значению параметра
Case(value, nodes...)Ветка для конкретного значения
DefaultCase(nodes...)Ветка по умолчанию
ConditionalBranch(cases...)Условное ветвление
When(cond, nodes...)Декларативная условная ветка
WhenFunc(fn, nodes...)Callback-условная ветка
Otherwise(nodes...)Ветка по умолчанию (для ConditionalBranch)

Условия

ФункцияОписание
ParamEq(param, value)Параметр равен значению
ParamNeq(param, value)Параметр не равен значению
ParamMatch(param, regex)Параметр соответствует regex
ParamSet(param)Параметр был заполнен
And(conds...)Все условия истинны
Or(conds...)Хотя бы одно условие истинно
Not(cond)Отрицание условия

Каталог переводов

МетодСигнатураОписание
NewCatalog(defaultLocale string) *CatalogСоздать каталог
.Add(locale string, translations map[string]string) *CatalogДобавить переводы
.Merge(other *Catalog) *CatalogОбъединить каталоги
.LoadFS(fsys fs.FS, dir string) *CatalogЗагрузить TOML-файлы
.L(key string, args ...any) map[string]stringВсе локали для ключа
.T(locale, key string, args ...any) stringПеревод для одной локали
.Tr(locale string) func(key string, args ...any) stringФункция-переводчик
.Opt(key, value string, args ...any) OptionЛокализованная опция

Message (rich content)

Конструктор / методСигнатураОписание
NewMessage(text string) MessageСоздать сообщение с текстовым блоком
NewLocalizedMessage(texts map[string]string) MessageСоздать сообщение с локализованным текстовым блоком
.Text(text string) MessageДобавить текстовый блок
.LocalizedText(texts map[string]string) MessageДобавить локализованный текстовый блок
.StyledText(text string, style TextStyle) MessageТекст со стилем
.LocalizedStyledText(texts map[string]string, style TextStyle) MessageЛокализованный текст со стилем
.Mention(userID string) MessageУпоминание пользователя
.File(ref FileRef, caption string) MessageФайл-вложение
.Link(url, label string) MessageСсылка
.Image(url string) MessageИзображение
.IsEmpty() boolПроверка, что сообщение пустое

Миграции

Функция / типОписание
MigrationsFromFS(fsys fs.FS, dir string) []SQLMigrationЗагрузить SQL-миграции из FS
SQLMigrationVersion int, Description string, Up string, Down string

Константы

КонстантаЗначениеОписание
TriggerMessenger"messenger"Тип messenger-триггера
TriggerHTTP"http"Тип HTTP-триггера
TriggerCron"cron"Тип Cron-триггера
TriggerEvent"event"Тип Event bus-триггера
StylePlain"plain"Обычный текст
StyleHeader"header"Заголовок
StyleSubheader"subheader"Подзаголовок
StyleCode"code"Моноширинный текст
StyleQuote"quote"Цитата
PriorityLow0Информационное уведомление
PriorityNormal1Стандартное уведомление
PriorityHigh2Важное - с упоминанием
PriorityCritical3Срочное - все каналы
ProtocolVersion4Версия wire-протокола плагинов