events

Внутренняя шина событий аддона связывает входящие HTTP и Socket.IO с вашим кодом.

events.On(name, handler)

Аргумент Описание
name Должен совпадать с callbackName из network.endpoints.create или network.socketEndpoints.create
handler Синхронная или async-функция; возвращаемое значение становится телом HTTP-ответа (для HTTP-маршрутов)

HTTP-обработчики получают:

{ query, params, body, headers?, rawBody? }

headers и rawBody доступны на POST-маршрутах (удобно для проверки подписи вебхука).

Возвращает подписку { id, Destroy() }.

Пример: HTTP-вебхук

await network.endpoints.create('webhook', 'POST', 'onWebhook');

events.On('onWebhook', ({ body, headers, rawBody }) => {
  console.log(body);
  return { received: true };
});

URL клиента:

POST http://localhost:{port}/addon/my_addon/webhook

Пример: редирект (OAuth)

Обработчики могут возвращать объекты, которые понимает главный процесс:

return { redirect: ui.auth.generateSuccess() };

Обработчики Socket.IO

При network.socketEndpoints.create обработчик получает:

{
  type: 'connect' | 'disconnect' | 'event',
  socketId,
  event?,      // для type === 'event'
  data?,       // payload клиента
}

Для type === 'event' ненулевое возвращаемое значение отправляется клиенту как reply.

Встроенные события (главный процесс → аддон)

Главный процесс может также пушить именованные события в воркер через events.On. Это не HTTP-колбэки — регистрируйте их так же, без создания эндпоинта.

Событие Когда Payload
addon:prepare-stop Перед убийством воркера (отключение, удаление или выход из приложения) {} — завершите удалённую очистку; держите обработчик коротким (~2.5 с таймаут). См. Жизненный цикл — Корректная остановка
triggers:validate Перед сохранением настроек, если могут измениться привязки триггеров { draft } — верните { success: false, message }, чтобы заблокировать сохранение
triggers:applied-changed После сохранения настроек, если привязки триггеров этого аддона изменились { previous, current }
overlayTriggerValue:{provider}:list|create|release UI динамических значений триггеров См. dashboard triggers
gameInputTrigger Совпавшее dashboard-событие для game input { actionId, trigger, record, user }
ytdlp:download-progress Пока выполняется ytdlp.downloadFile { downloadId, progress }
fileAccessGranted / fileAccessRevoked Пользователь выдал или отозвал доступ к файлам См. file access

Пример: корректная остановка

events.On('addon:prepare-stop', async () => {
  await pauseRemoteRewards();
  return { success: true };
});

Жизненный цикл

Отпишитесь через subscription.Destroy() или при перезапуске воркера.