Aller au contenu
twitch.apiv2.0

Référence / Groupes de l'API

twitch.eventsub

EventSub : abonnements, et écouteurs WebSocket, webhook et conduit.

Toutes les méthodes de twitch.eventsub, avec leurs paramètres, ce qu’elles renvoient et le jeton nécessaire.

twitch.eventsub.subscribe(params, options?): Promise<EventSubSubscription<string, EventSubCondition<T>>>

Crée un abonnement à la main. Vous en avez rarement besoin : les écouteurs renvoyés par websocket, webhook et conduit s’abonnent pour vous.

Jeton : utilisateur pour le transport WebSocket, application pour les webhooks et les conduits. Les scopes dépendent du type d’abonnement.

NomTypeDescription
type requisTType d’abonnement, par exemple channel.follow.
condition requisEventSubCondition<T>Ce qu’il faut écouter : quelle chaîne, quel utilisateur… Sa forme dépend du type.
transport requisEventSubTransportInputEndroit où Twitch livre les événements.

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

Promise<EventSubSubscription<string, EventSubCondition<T>>>

Champs de EventSubSubscription
NomTypeDescription
idstringIdentifiant de l’abonnement.
statusEventSubSubscriptionStatusÉtat actuel. Seuls les abonnements enabled livrent des événements.
typestringType d’abonnement, par exemple channel.follow.
versionstringVersion du type d’abonnement.
conditionEventSubCondition<T>Condition avec laquelle l’abonnement a été créé.
created_atstringDate de création de l’abonnement, sous forme d’horodatage RFC 3339.
transportEventSubTransportEndroit où les événements sont livrés.
costnumberPart de votre limite de coût consommée par l’abonnement.
await twitch.eventsub.subscribe({
type: "stream.online",
condition: { broadcaster_user_id: "141981764" },
transport: { method: "webhook", callback: "https://example.com/twitch", secret },
});

Référence Twitch

twitch.eventsub.unsubscribe(id, options?): Promise<void>

Supprime un abonnement. Le jeton d’application est utilisé sauf indication contraire : pour un abonnement créé par WebSocket, passez { as: userId } avec l’utilisateur dont le jeton l’a créé.

Jeton : utilisateur pour un abonnement WebSocket, application sinon.

id : string

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

Promise<void>

await twitch.eventsub.unsubscribe(subscription.id);

Référence Twitch

twitch.eventsub.subscriptions(params?, options?): Paginator<EventSubSubscription<string, Record<string, string>>, GetEventSubSubscriptionsBody>

Liste vos abonnements, du plus ancien au plus récent. Avec le jeton d’application, vous obtenez ceux des webhooks et des conduits. Passez { as: userId } pour obtenir les abonnements WebSocket créés avec le jeton de cet utilisateur.

Jeton : application ou utilisateur, voir ci-dessus.

NomTypeDescription
statusEventSubSubscriptionStatusUniquement les abonnements dans cet état.
type(string & {}) | keyof EventSubTypesUniquement les abonnements de ce type.
user_idstringUniquement les abonnements dont la condition mentionne cet utilisateur.
subscription_idstringUniquement l’abonnement qui porte cet identifiant.
conduit_idstringUniquement les abonnements livrés par ce conduit.
afterstringCurseur de la page suivante.

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

Paginator<EventSubSubscription<string, Record<string, string>>, GetEventSubSubscriptionsBody>

Champs de EventSubSubscription
NomTypeDescription
idstringIdentifiant de l’abonnement.
statusEventSubSubscriptionStatusÉtat actuel. Seuls les abonnements enabled livrent des événements.
typestringType d’abonnement, par exemple channel.follow.
versionstringVersion du type d’abonnement.
conditionRecord<string, string>Condition avec laquelle l’abonnement a été créé.
created_atstringDate de création de l’abonnement, sous forme d’horodatage RFC 3339.
transportEventSubTransportEndroit où les événements sont livrés.
costnumberPart de votre limite de coût consommée par l’abonnement.
const page = await twitch.eventsub.subscriptions({ status: "enabled" });
console.log(page.raw.total_cost, "of", page.raw.max_total_cost);

Référence Twitch

twitch.eventsub.websocket(options?): EventSubWebSocket

Ouvre un écouteur WebSocket : le moyen le plus simple de recevoir des événements, sans rien à héberger. Les abonnements sont créés avec un jeton utilisateur.

Cette méthode ne prend aucun paramètre propre.

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

EventSubWebSocket

Champs de EventSubWebSocket
NomTypeDescription
urlstring
WebSocketWebSocketConstructor
#backendSubscriptionBackend
#strategySessionStrategy
#connectionsConnection[]
#whereMap<Entry, Connection>
#seenBoundedMap<string, true>
#lifecycleEmitter<SocketEvents>
sessionIdsstring[]Identifiants des sessions actuellement établies. Vide tant que la connexion est coupée.
connectedbooleanIndique si au moins une session est établie.
entriesMap<string, Entry>
#byIdMap<string, Entry>
#eventsEmitter<ListenerEvents>
sizenumberNombre d’abonnements actifs.
const events = twitch.eventsub.websocket();
events.on("channel.follow", { broadcaster_user_id: id, moderator_user_id: id }, (event) => {
console.log(`${event.user_name} followed`);
});

Référence Twitch

twitch.eventsub.webhook(options): EventSubWebhook

Crée un écouteur webhook, pour les serveurs joignables depuis Internet. Les abonnements sont créés avec le jeton d’application et survivent aux redémarrages.

Cette méthode ne prend aucun paramètre propre.

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

EventSubWebhook

Champs de EventSubWebhook
NomTypeDescription
#backendSubscriptionBackend
#callbackstring
#secretstring
#subscribeboolean
#maxAgenumber
#seenMap<string, number>Identifiants des messages déjà traités, avec le moment où chacun a été vu. Du plus ancien au plus récent.
entriesMap<string, Entry>
#byIdMap<string, Entry>
#eventsEmitter<ListenerEvents>
sizenumberNombre d’abonnements actifs.
const hooks = twitch.eventsub.webhook({ callback: "https://example.com/twitch", secret });
hooks.on("stream.online", { broadcaster_user_id: "141981764" }, (event) => {
console.log(`${event.broadcaster_user_name} went live`);
});
export default { fetch: (request: Request) => hooks.handle(request) };

Référence Twitch

twitch.eventsub.conduit(options?): EventSubWebSocket

Ouvre un WebSocket qui dessert un shard d’un conduit. Les abonnements sont créés avec le jeton d’application : un seul processus peut donc suivre autant de chaînes qu’il le faut sans garder une connexion par utilisateur, et ils survivent aux redémarrages. Lancez un processus par shard pour répartir la charge.

Cette méthode ne prend aucun paramètre propre.

options : Options de requête pour cet appel : as, token, signal, timeout, retries.

EventSubWebSocket

Champs de EventSubWebSocket
NomTypeDescription
urlstring
WebSocketWebSocketConstructor
#backendSubscriptionBackend
#strategySessionStrategy
#connectionsConnection[]
#whereMap<Entry, Connection>
#seenBoundedMap<string, true>
#lifecycleEmitter<SocketEvents>
sessionIdsstring[]Identifiants des sessions actuellement établies. Vide tant que la connexion est coupée.
connectedbooleanIndique si au moins une session est établie.
entriesMap<string, Entry>
#byIdMap<string, Entry>
#eventsEmitter<ListenerEvents>
sizenumberNombre d’abonnements actifs.
const events = twitch.eventsub.conduit();
events.on("channel.chat.message", { broadcaster_user_id: channelId, user_id: botId }, (event) => {
console.log(event.message.text);
});

Référence Twitch