events
Внутрішня шина подій аддона з'єднує вхідні HTTP- і Socket.IO-обробники з вашим кодом.
events.On(name, handler)
| Аргумент | Опис |
|---|---|
name |
Має збігатися з callbackName з network.endpoints.create або network.socketEndpoints.create |
handler |
Async або sync функція; значення повернення стає тілом HTTP-відповіді (для HTTP-маршрутів) |
HTTP-обробники отримують:
{ query, params, body, headers?, rawBody? }
headers і rawBody доступні на POST-маршрутах (корисно для перевірки підпису webhook).
Повертає підписку { id, Destroy() }.
Приклад: HTTP webhook
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
Приклад: повернення redirect (OAuth)
Обробники можуть повертати об'єкти, які розуміє main process:
return { redirect: ui.auth.generateSuccess() };
Обробники Socket.IO
При використанні network.socketEndpoints.create обробник отримує:
{
type: 'connect' | 'disconnect' | 'event',
socketId,
event?, // for type === 'event'
data?, // client payload
}
Для type === 'event' значення повернення, відмінне від undefined, надсилається клієнту як reply.
Вбудовані події (головний процес → аддон)
Головний процес також може пушити іменовані події у worker через events.On. Це не HTTP-колбеки — реєструйте їх так само, без створення ендпоінта.
| Подія | Коли | Payload |
|---|---|---|
addon:prepare-stop |
Перед убивством worker (вимкнення, видалення або вихід із застосунку) | {} — завершіть віддалений cleanup; тримайте обробник коротким (~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() або при перезапуску worker.