Un client de l'API Twitch pour JavaScript et TypeScript
Toute l'API Twitch, typée.
twitch.api est un client pour JavaScript et TypeScript qui couvre les 149 endpoints Helix et les 83 événements EventSub. Jetons, limites de débit, pagination et reconnexions sont pris en charge, sans aucune dépendance.
npm i @ix-xs/twitch.api- Open source, MIT
- Node 22 et suivants
- Aucune dépendance
Appelez une méthode, recevez des données typées
Pas de jeton à demander, pas d’en-tête à poser, pas de curseur à transporter. Choisissez un exemple et lancez-le : à gauche le programme, à droite ce que la bibliothèque fait pour lui. Dans l’exemple du chat, écrivez un message et le bot répond.
const twitch = new Twitch({ clientId, clientSecret });
const user = await twitch.users.getByLogin("twitchdev");if (!user) throw new Error("No such user");
const [channel] = await twitch.channels.get({ broadcaster_id: user.id,});const followers = await twitch.channels .followers({ broadcaster_id: user.id }) .total();
console.log(channel?.title, followers);- Pas encore de jeton : il est demandé, une seule fois.
- POSTid.twitch.tv/oauth2/token200
- GET/users?login=twitchdev200
- GET/channels?broadcaster_id=141981764200
- GET/channels/followers?broadcaster_id=141981764&first=1200
- "Building the next thing" 2841907
// 250 streams : trois requêtes, un seul tableau.const top = await twitch.streams.get({ language: "fr" }).take(250);
for (const stream of top.slice(0, 3)) { console.log(stream.user_name, stream.viewer_count);}
// Ou parcourir toutes les pages sans les garder toutes en mémoire.for await (const stream of twitch.streams.get({ language: "fr" })) { if (stream.viewer_count < 1000) break;}- GET/streams?language=fr&first=100200
- GET/streams?language=fr&first=100&after=eyJiIjp7Ik9m...200
- GET/streams?language=fr&first=100&after=eyJiIjp7IkN1...200
- 250 collectés, le reste de la troisième page est écarté.
- nuit_blanche 18204
- atelier_pixel 9311
- LeGrandFroid 7754
const events = twitch.eventsub.websocket();
events.on( "channel.chat.message", { broadcaster_user_id: channel, user_id: bot }, async (event) => { if (event.message.text !== "!ping") return; await twitch.chat.send({ broadcaster_id: channel, message: "pong", reply_parent_message_id: event.message_id, }); },);- WebSocket ouvert, session accueillie.
- POST/eventsub/subscriptions202
- margueritebonjour tout le monde
- kowalczyk_devle bot est réveillé ?
- kowalczyk_dev!ping
- POST/chat/messages200
- your_botbotpong
const hooks = twitch.eventsub.webhook({ callback, secret });
hooks.on( "stream.online", { broadcaster_user_id: "141981764" }, (event) => { notify(`${event.broadcaster_user_name} is live`); },);
// Les signatures sont vérifiées avant l'appel de votre gestionnaire.export default { fetch: (request: Request) => hooks.handle(request),};- POST/eventsub/subscriptions202
- Twitch vérifie le callback : défi relevé.
- stream.onlineTwitchDev
- Signature valide, ni rejeu ni doublon.
- notify: TwitchDev is live
Trouvez votre endpoint
Tapez ce que vous voulez faire. Chaque méthode et chaque type d’événement est ici, avec le jeton nécessaire, et renvoie vers ses paramètres, son type de retour et un exemple.
twitch.users.getByLogin()Renvoie un utilisateur d'après son nom de connexion, ounullquand il n'existe pas.jeton d'application ou utilisateurtwitch.streams.get()Liste les streams en direct, en commençant par ceux qui ont le plus de spectateurs.jeton d'application ou utilisateurtwitch.chat.send()Envoie un message dans le chat d'une chaîne.jeton d'application ou utilisateurtwitch.moderation.ban()Bannit un utilisateur du chat d'une chaîne.jeton d'application ou utilisateurtwitch.channels.followers()Liste les followers d'une chaîne, du plus récent au plus ancien.jeton d'application ou utilisateurtwitch.clips.create()Met en clip les dernières secondes d'un stream en direct.jeton utilisateurchannel.chat.messageUn utilisateur a envoyé un message dans le chat.événementstream.onlineLe diffuseur a lancé un stream.événementtwitch.ads.startCommercial()Lance une coupure publicitaire sur une chaîne.jeton d'application ou utilisateurtwitch.ads.schedule()Renvoie le planning publicitaire d'une chaîne.jeton d'application ou utilisateurtwitch.ads.snooze()Repousse de cinq minutes la prochaine publicité mid-roll automatique, au prix d'un report.jeton d'application ou utilisateurtwitch.analytics.extensions()Liste les rapports disponibles pour les extensions de l'utilisateur qui fait l'appel.jeton utilisateurtwitch.analytics.games()Liste les rapports disponibles pour les jeux de l'utilisateur qui fait l'appel.jeton utilisateurtwitch.bits.leaderboard()Renvoie le classement des Bits de la chaîne de l'utilisateur qui fait l'appel, depuis sa création ou sur un jour, une semaine, un mois ou une année donnés.jeton utilisateurtwitch.bits.cheermotes()Liste les Cheermotes utilisables sur toutes les chaînes, ainsi que les Cheermotes personnalisés d'un diffuseur quand vous en indiquez un.jeton d'application ou utilisateurtwitch.bits.customPowerUps()Liste les Power-ups personnalisés créés par un diffuseur, activés ou non.jeton utilisateurtwitch.bits.extensionTransactions()Liste les achats faits en Bits dans une extension.jeton d'applicationtwitch.channelPoints.createReward()Ajoute une récompense personnalisée à une chaîne.jeton utilisateurtwitch.channelPoints.deleteReward()Supprime une récompense personnalisée.jeton utilisateurtwitch.channelPoints.rewards()Liste les récompenses personnalisées d'une chaîne, triées par identifiant.jeton utilisateurtwitch.channelPoints.redemptions()Liste les utilisations d'une récompense personnalisée.jeton utilisateurtwitch.channelPoints.updateReward()Modifie une récompense personnalisée.jeton utilisateurtwitch.channelPoints.updateRedemptions()Honore ou annule des utilisations qui attendent encore dans la file, et les renvoie.jeton utilisateurtwitch.channels.get()Renvoie le titre, la catégorie, la langue et les tags d'une ou de plusieurs chaînes.jeton d'application ou utilisateurtwitch.channels.update()Modifie le titre, la catégorie, la langue, les tags, le délai ou les étiquettes de classification du contenu d'une chaîne.jeton utilisateurtwitch.channels.editors()Liste les éditeurs d'une chaîne.jeton utilisateurtwitch.channels.followed()Liste les chaînes qu'un utilisateur suit, de la plus récemment suivie à la plus ancienne.jeton utilisateurtwitch.charity.campaign()Renvoie la collecte caritative que mène un diffuseur, ounullquand il n'y en a pas.jeton utilisateurtwitch.charity.donations()Liste les dons faits à la collecte que mène un diffuseur.jeton utilisateurtwitch.chat.chatters()Liste les utilisateurs connectés au chat d'une chaîne.jeton d'application ou utilisateurtwitch.chat.channelEmotes()Renvoie les emotes personnalisées d'une chaîne.jeton d'application ou utilisateurtwitch.chat.globalEmotes()Renvoie les emotes créées par Twitch, utilisables dans tous les chats.jeton d'application ou utilisateurtwitch.chat.emoteSets()Renvoie les emotes d'un ou de plusieurs ensembles d'emotes.jeton d'application ou utilisateurtwitch.chat.channelBadges()Renvoie les badges de chat personnalisés d'une chaîne, comme ses badges d'abonné et de Bits.jeton d'application ou utilisateurtwitch.chat.globalBadges()Renvoie les badges de chat créés par Twitch, qui peuvent apparaître dans tous les chats.jeton d'application ou utilisateurtwitch.chat.settings()Renvoie les réglages du chat d'une chaîne.jeton d'application ou utilisateurtwitch.chat.sharedSession()Renvoie la session de chat partagé à laquelle une chaîne participe, ounullquand elle ne participe à aucune.jeton d'application ou utilisateurtwitch.chat.userEmotes()Liste toutes les emotes qu'un utilisateur peut envoyer, toutes chaînes confondues.jeton utilisateurtwitch.chat.updateSettings()Modifie les réglages du chat d'une chaîne et renvoie les nouveaux.jeton d'application ou utilisateurtwitch.chat.announce()Publie une annonce mise en avant dans le chat d'une chaîne.jeton d'application ou utilisateurtwitch.chat.shoutout()Fait un shoutout à un autre diffuseur, ce qui affiche sa chaîne dans le chat avec un bouton pour la suivre.jeton d'application ou utilisateurtwitch.chat.pinnedMessage()Renvoie le message épinglé dans le chat d'une chaîne, ounullquand rien n'est épinglé.jeton d'application ou utilisateurtwitch.chat.pin()Épingle un message en haut du chat d'une chaîne.jeton d'application ou utilisateurtwitch.chat.updatePin()Modifie la durée pendant laquelle un message épinglé le reste.jeton d'application ou utilisateurtwitch.chat.unpin()Retire un message épinglé du haut du chat d'une chaîne.jeton d'application ou utilisateurtwitch.chat.colors()Renvoie la couleur du nom des utilisateurs dans le chat.jeton d'application ou utilisateurtwitch.chat.setColor()Modifie la couleur du nom d'un utilisateur dans le chat.jeton utilisateurtwitch.clips.createFromVod()Met en clip un passage d'une vidéo, en tant que diffuseur ou éditeur de la chaîne.jeton d'application ou utilisateurtwitch.clips.get()Liste les clips d'un diffuseur ou d'une catégorie, du plus vu au moins vu, ou renvoie des clips d'après leur identifiant.jeton d'application ou utilisateurtwitch.clips.downloads()Renvoie des liens temporaires vers les fichiers vidéo de clips, en tant que diffuseur ou éditeur de la chaîne.jeton d'application ou utilisateurtwitch.conduits.list()Liste les conduits de votre application.jeton d'applicationtwitch.conduits.create()Crée un conduit avec le nombre de shards donné.jeton d'applicationtwitch.conduits.update()Change le nombre de shards d'un conduit.jeton d'applicationtwitch.conduits.delete()Supprime un conduit.jeton d'applicationtwitch.conduits.shards()Liste les shards d'un conduit et l'endroit où chacun livre les événements.jeton d'applicationtwitch.conduits.updateShards()Dirige des shards vers un callback de webhook ou une session WebSocket.jeton d'applicationtwitch.contentLabels.list()Liste toutes les étiquettes de classification du contenu, avec leur nom et leur description dans la langue demandée.jeton d'application ou utilisateurtwitch.entitlements.drops()Liste les droits liés aux Drops de votre organisation, sans ordre particulier.jeton d'application ou utilisateurtwitch.entitlements.updateDrops()Définit le statut de droits liés aux Drops, en général"FULFILLED"une fois la récompense remise en jeu.jeton d'application ou utilisateurtwitch.eventsub.subscribe()Crée un abonnement à la main.jeton utilisateurtwitch.eventsub.unsubscribe()Supprime un abonnement.jeton utilisateurtwitch.eventsub.subscriptions()Liste vos abonnements, du plus ancien au plus récent.jeton d'application ou utilisateurtwitch.eventsub.websocket()Ouvre un écouteur WebSocket.JWT d'extensiontwitch.eventsub.webhook()Crée un écouteur webhook, pour les serveurs joignables depuis Internet.JWT d'extensiontwitch.eventsub.conduit()Ouvre un WebSocket qui dessert un shard d'un conduit.JWT d'extensiontwitch.extensions.configuration()Lit un ou plusieurs segments de configuration d'une extension, dans l'ordre où vous les avez demandés.JWT d'extensiontwitch.extensions.setConfiguration()Écrit un segment de configuration.JWT d'extensiontwitch.extensions.setRequiredConfiguration()Définit, pour une chaîne, la chaîne de caractères de configuration requise, dans le cas des extensions que le diffuseur doit configurer avant de pouvoir les activer.JWT d'extensiontwitch.extensions.sendPubSub()Envoie un message aux copies d'une extension en cours d'exécution.JWT d'extensiontwitch.extensions.liveChannels()Liste les chaînes en direct qui ont installé ou activé une extension.jeton d'application ou utilisateurtwitch.extensions.secrets()Renvoie les secrets partagés d'une extension.JWT d'extensiontwitch.extensions.createSecret()Crée un nouveau secret partagé.JWT d'extensiontwitch.extensions.sendChatMessage()Publie un message dans le chat d'une chaîne sous le nom de l'extension.JWT d'extensiontwitch.extensions.get()Renvoie la description d'une extension, publiée ou non.JWT d'extensiontwitch.extensions.released()Renvoie la description d'une extension publiée.jeton d'application ou utilisateurtwitch.extensions.bitsProducts()Liste les produits Bits de l'extension à laquelle appartient votre identifiant client, triés par SKU.jeton d'applicationtwitch.extensions.updateBitsProduct()Crée un produit Bits, ou met à jour celui qui porte déjà ce SKU.jeton d'applicationtwitch.games.top()Liste les catégories qui ont le plus de spectateurs en ce moment, en commençant par les plus regardées.jeton d'application ou utilisateurtwitch.games.get()Renvoie des catégories d'après leur identifiant, leur nom exact, leur identifiant IGDB, ou n'importe quelle combinaison des trois.jeton d'application ou utilisateurtwitch.goals.get()Liste les objectifs actifs d'un diffuseur avec leur progression actuelle.jeton utilisateurtwitch.guestStar.settings()Renvoie les réglages Guest Star d'une chaîne.jeton utilisateurtwitch.guestStar.updateSettings()Modifie les réglages Guest Star d'une chaîne.jeton utilisateurtwitch.guestStar.session()Renvoie la session Guest Star en cours sur une chaîne, ounullquand il n'y en a aucune.jeton utilisateurtwitch.guestStar.createSession()Lance une session Guest Star dont le diffuseur est le seul membre.jeton utilisateurtwitch.guestStar.endSession()Met fin à une session Guest Star, comme si l'hôte appuyait sur « End Call ».jeton utilisateurtwitch.guestStar.invites()Liste les invitations en attente d'une session, en indiquant où en est chaque utilisateur invité dans la salle d'attente.jeton utilisateurtwitch.guestStar.invite()Invite un utilisateur à une session en cours.jeton utilisateurtwitch.guestStar.deleteInvite()Retire une invitation à une session.jeton utilisateurtwitch.guestStar.assignSlot()Installe un utilisateur invité à un emplacement de la session, une fois qu'il est prêt à la rejoindre.jeton utilisateurtwitch.guestStar.updateSlot()Déplace un invité vers un autre emplacement.jeton utilisateurtwitch.guestStar.deleteSlot()Retire un invité de son emplacement.jeton utilisateurtwitch.guestStar.updateSlotSettings()Modifie ce qu'un emplacement peut partager et la façon dont il apparaît dans le stream.jeton utilisateurtwitch.hypeTrain.status()Renvoie le Hype Train en cours sur une chaîne, s'il y en a un, ainsi que les records de la chaîne.jeton utilisateurtwitch.moderation.checkAutoMod()Indique si AutoMod laisserait passer des messages sur une chaîne, sans les envoyer.jeton d'application ou utilisateurtwitch.moderation.manageAutoModMessage()Approuve ou refuse un message qu'AutoMod retient pour examen.jeton d'application ou utilisateurtwitch.moderation.autoModSettings()Renvoie les niveaux AutoMod d'une chaîne.jeton d'application ou utilisateurtwitch.moderation.updateAutoModSettings()Remplace les niveaux AutoMod d'une chaîne.jeton d'application ou utilisateurtwitch.moderation.bans()Liste les utilisateurs bannis ou sous timeout sur une chaîne.jeton d'application ou utilisateurtwitch.moderation.unban()Lève le bannissement ou le timeout d'un utilisateur.jeton d'application ou utilisateurtwitch.moderation.unbanRequests()Liste les demandes de débannissement d'une chaîne qui sont dans un état donné.jeton utilisateurtwitch.moderation.resolveUnbanRequest()Approuve ou refuse une demande de débannissement.jeton utilisateurtwitch.moderation.blockedTerms()Liste les termes bloqués d'une chaîne, du plus récent au plus ancien.jeton d'application ou utilisateurtwitch.moderation.addBlockedTerm()Bloque un mot ou une expression dans le chat d'une chaîne.jeton d'application ou utilisateurtwitch.moderation.removeBlockedTerm()Retire un terme des termes bloqués d'une chaîne.jeton d'application ou utilisateurtwitch.moderation.deleteMessages()Supprime un message du chat d'une chaîne, ou tous les messages quand aucunmessage_idn'est donné.jeton d'application ou utilisateurtwitch.moderation.moderatedChannels()Liste les chaînes dont un utilisateur est modérateur.jeton d'application ou utilisateurtwitch.moderation.moderators()Liste les modérateurs d'une chaîne.jeton utilisateurtwitch.moderation.addModerator()Nomme un utilisateur modérateur de la chaîne.jeton utilisateurtwitch.moderation.removeModerator()Retire le rôle de modérateur à un utilisateur.jeton utilisateurtwitch.moderation.vips()Liste les VIP d'une chaîne.jeton utilisateurtwitch.moderation.addVip()Nomme un utilisateur VIP de la chaîne.jeton utilisateurtwitch.moderation.removeVip()Retire le statut VIP à un utilisateur.jeton utilisateurtwitch.moderation.updateShieldMode()Active ou désactive le Shield Mode sur une chaîne.jeton d'application ou utilisateurtwitch.moderation.shieldMode()Indique si le Shield Mode est activé sur une chaîne et qui l'a activé en dernier.jeton d'application ou utilisateurtwitch.moderation.warn()Envoie un avertissement à un utilisateur du chat, qui ne peut plus y écrire tant qu'il n'en a pas pris acte.jeton d'application ou utilisateurtwitch.moderation.addSuspiciousStatus()Signale comme suspect un spectateur présent dans le chat d'une chaîne, soit pour le surveiller, soit pour restreindre ses messages.jeton d'application ou utilisateurtwitch.moderation.removeSuspiciousStatus()Retire le statut suspect d'un spectateur présent dans le chat d'une chaîne.jeton d'application ou utilisateurtwitch.polls.get()Liste les sondages d'une chaîne, du plus récent au plus ancien.jeton utilisateurtwitch.polls.create()Lance un sondage sur une chaîne.jeton utilisateurtwitch.polls.end()Clôt un sondage en cours avant la fin de sa durée et, si vous le demandez, le masque.jeton utilisateurtwitch.predictions.get()Liste les prédictions d'une chaîne, de la plus récente à la plus ancienne.jeton utilisateurtwitch.predictions.create()Lance une prédiction sur une chaîne.jeton utilisateurtwitch.predictions.end()Verrouille, résout ou annule une prédiction.jeton utilisateurtwitch.raids.start()Prépare un raid vers une autre chaîne.jeton utilisateurtwitch.raids.cancel()Annule un raid qui n'est pas encore parti.jeton utilisateurtwitch.schedule.get()Liste les diffusions prévues d'une chaîne.jeton d'application ou utilisateurtwitch.schedule.icalendar()Renvoie le planning d'une chaîne sous forme de texte iCalendar, prêt à être enregistré dans un fichier.ics.jeton d'application ou utilisateurtwitch.schedule.updateSettings()Planifie ou annule les vacances d'une chaîne.jeton utilisateurtwitch.schedule.createSegment()Ajoute une diffusion ponctuelle ou hebdomadaire au planning d'une chaîne.jeton utilisateurtwitch.schedule.updateSegment()Modifie ou annule une diffusion prévue.jeton utilisateurtwitch.schedule.deleteSegment()Supprime une diffusion prévue.jeton utilisateurtwitch.search.categories()Trouve les catégories dont le nom contient tous les mots de la recherche, dans n'importe quel ordre et sans tenir compte de la casse.jeton d'application ou utilisateurtwitch.search.channels()Trouve les chaînes qui ont streamé au cours des six derniers mois.jeton d'application ou utilisateurtwitch.streams.followed()Liste les streams en direct des chaînes que suit un utilisateur, en commençant par ceux qui ont le plus de spectateurs.jeton utilisateurtwitch.streams.key()Renvoie la clé de stream d'une chaîne.jeton utilisateurtwitch.streams.createMarker()Marque la position actuelle d'un stream en direct.jeton utilisateurtwitch.streams.markers()Liste les marqueurs de la vidéo la plus récente d'un utilisateur, ou d'une vidéo donnée.jeton utilisateurtwitch.subscriptions.get()Liste les abonnés d'une chaîne.jeton utilisateurtwitch.subscriptions.check()Renvoie l'abonnement d'un utilisateur à une chaîne, ounullquand il n'y est pas abonné.jeton utilisateurtwitch.tags.all()Liste les tags de stream définis par Twitch.jeton d'application ou utilisateurtwitch.tags.ofChannel()Liste les tags définis par Twitch appliqués à une chaîne.jeton d'application ou utilisateurtwitch.teams.ofChannel()Liste les équipes dont un diffuseur est membre.jeton d'application ou utilisateurtwitch.teams.get()Renvoie une équipe et ses membres, d'après son nom ou son identifiant.jeton d'application ou utilisateurtwitch.users.get()Renvoie des utilisateurs d'après leur identifiant, leur nom de connexion, ou les deux.jeton d'application ou utilisateurtwitch.users.getById()Renvoie un utilisateur d'après son identifiant, ounullquand il n'existe pas.jeton d'application ou utilisateurtwitch.users.me()Renvoie l'utilisateur à qui appartient le jeton utilisé pour l'appel.jeton utilisateurtwitch.users.update()Met à jour la description de l'utilisateur qui fait l'appel.jeton utilisateurtwitch.users.authorization()Indique quels scopes les utilisateurs donnés ont accordés à votre application.jeton d'applicationtwitch.users.blocks()Liste les utilisateurs bloqués par un diffuseur, du plus récent au plus ancien.jeton utilisateurtwitch.users.block()Bloque un utilisateur au nom de l'utilisateur qui fait l'appel.jeton utilisateurtwitch.users.unblock()Lève un blocage posé par l'utilisateur qui fait l'appel.jeton utilisateurtwitch.users.extensions()Liste les extensions installées par l'utilisateur qui fait l'appel.jeton utilisateurtwitch.users.activeExtensions()Renvoie les extensions actives d'un diffuseur, emplacement par emplacement.jeton d'application ou utilisateurtwitch.users.updateExtensions()Active, désactive ou déplace les extensions de l'utilisateur qui fait l'appel.jeton utilisateurtwitch.videos.get()Renvoie des vidéos d'après leur identifiant, ou liste les vidéos d'un utilisateur ou d'une catégorie.jeton d'application ou utilisateurtwitch.videos.delete()Supprime des vidéos et se résout avec les identifiants supprimés.jeton utilisateurtwitch.whispers.send()Envoie un chuchotement à un utilisateur.jeton utilisateurautomod.message.holdAutoMod a retenu un message pour examen.événementautomod.message.hold@1AutoMod a retenu un message pour examen (ancien format, sans la raison).événementautomod.message.updateUn message en attente dans la file d'AutoMod a été approuvé ou refusé, ou a expiré.événementautomod.message.update@1Un message en attente dans la file d'AutoMod a été approuvé ou refusé, ou a expiré (ancien format, sans la raison).événementautomod.settings.updateLes réglages AutoMod de la chaîne ont changé.événementautomod.terms.updateLes termes autorisés ou bloqués de la chaîne ont changé.événementchannel.ad_break.beginUne coupure publicitaire mid-roll a commencé, lancée à la main ou programmée par Ads Manager.événementchannel.banUn spectateur a été banni ou mis sous timeout sur la chaîne.événementchannel.bits.useDes Bits ont été utilisés sur la chaîne, par un cheer ou un Power-up.événementchannel.channel_points_automatic_reward_redemption.addUn spectateur a utilisé une récompense automatique de points de chaîne (version 2, message découpé en fragments).événementchannel.channel_points_automatic_reward_redemption.add@1Un spectateur a utilisé une récompense automatique de points de chaîne (version 1, message avec la position des emotes).événementchannel.channel_points_custom_reward_redemption.addUn spectateur a utilisé une récompense personnalisée de points de chaîne.événementchannel.channel_points_custom_reward_redemption.updateUne utilisation d'une récompense personnalisée de points de chaîne a été honorée ou annulée.événementchannel.channel_points_custom_reward.addLe diffuseur a créé une récompense personnalisée de points de chaîne.événementchannel.channel_points_custom_reward.removeUne récompense personnalisée de points de chaîne a été supprimée.événementchannel.channel_points_custom_reward.updateUne récompense personnalisée de points de chaîne a été modifiée.événementchannel.charity_campaign.donateUn spectateur a fait un don à la collecte caritative du diffuseur.événementchannel.charity_campaign.progressUne collecte caritative a progressé vers son objectif, ou le diffuseur a modifié cet objectif.événementchannel.charity_campaign.startLe diffuseur a lancé une collecte caritative.événementchannel.charity_campaign.stopLe diffuseur a arrêté une collecte caritative.événementchannel.chat_settings.updateLes réglages du chat de la chaîne ont changé (mode emotes seules, followers, lent, abonnés ou messages uniques).événementchannel.chat.clearUn modérateur ou un bot a effacé tous les messages du chat.événementchannel.chat.clear_user_messagesUn modérateur ou un bot a effacé tous les messages d'un utilisateur, après un bannissement ou un timeout.événementchannel.chat.message_deleteUn modérateur a supprimé un message du chat.événementchannel.chat.notificationIl s'est produit quelque chose que le chat affiche comme une notification, par exemple un abonnement, un abonnement offert, un raid ou une annonce.événementchannel.chat.user_message_holdUn message de l'utilisateur indiqué dansuser_ida été retenu par AutoMod.événementchannel.chat.user_message_updateLe statut AutoMod d'un message retenu de l'utilisateur indiqué dansuser_ida changé.événementchannel.cheerUn utilisateur a envoyé un cheer en Bits sur la chaîne.événementchannel.custom_power_up_redemption.addUn spectateur a utilisé un Power-up personnalisé.événementchannel.followQuelqu'un s'est mis à suivre la chaîne.événementchannel.goal.beginLe diffuseur a lancé un objectif de créateur.événementchannel.goal.endLe diffuseur a mis fin à un objectif de créateur.événementchannel.goal.progressUn objectif de créateur a progressé ou reculé.événementchannel.guest_star_guest.updateUn invité ou un emplacement a changé dans une session Guest Star en cours.événementchannel.guest_star_session.beginL'hôte a lancé une session Guest Star.événementchannel.guest_star_session.endUne session Guest Star s'est terminée, fermée par l'hôte ou par Twitch.événementchannel.guest_star_settings.updateL'hôte a changé les préférences Guest Star de la chaîne.événementchannel.hype_train.beginUn Hype Train a démarré sur la chaîne.événementchannel.hype_train.endUn Hype Train s'est terminé sur la chaîne.événementchannel.hype_train.progressUne contribution a fait avancer un Hype Train en cours.événementchannel.moderateUn modérateur a effectué une action de modération sur la chaîne, avertissements compris.événementchannel.moderate@1Un modérateur a effectué une action de modération sur la chaîne.événementchannel.moderator.addUn utilisateur est devenu modérateur de la chaîne.événementchannel.moderator.removeUn utilisateur a perdu le statut de modérateur sur la chaîne.événementchannel.poll.beginUn sondage a démarré sur la chaîne.événementchannel.poll.endUn sondage s'est terminé sur la chaîne.événementchannel.poll.progressDes spectateurs ont voté dans un sondage en cours.événementchannel.prediction.beginUne prédiction a démarré sur la chaîne.événementchannel.prediction.endUne prédiction s'est terminée, résolue ou annulée.événementchannel.prediction.lockLes paris d'une prédiction ont été clos.événementchannel.prediction.progressDes spectateurs ont parié sur une prédiction en cours.événementchannel.raidUn diffuseur a lancé un raid sur une autre chaîne.événementchannel.shared_chat.beginLa chaîne est devenue active dans une session de chat partagé.événementchannel.shared_chat.endLa chaîne a quitté une session de chat partagé, ou la session s'est terminée.événementchannel.shared_chat.updateLa session de chat partagé à laquelle la chaîne participe a changé, par exemple ses participants.événementchannel.shield_mode.beginLe Shield Mode a été activé sur la chaîne.événementchannel.shield_mode.endLe Shield Mode a été désactivé sur la chaîne.événementchannel.shoutout.createLe diffuseur a envoyé un shoutout à une autre chaîne.événementchannel.shoutout.receiveLe diffuseur a reçu un shoutout d'une autre chaîne.événementchannel.subscribeUn utilisateur s'est abonné à la chaîne.événementchannel.subscription.endUn abonnement à la chaîne a pris fin.événementchannel.subscription.giftUn spectateur a offert un ou plusieurs abonnements sur la chaîne.événementchannel.subscription.messageUn abonné a partagé un message de réabonnement dans le chat.événementchannel.suspicious_user.messageUn utilisateur signalé comme suspect a envoyé un message dans le chat.événementchannel.suspicious_user.updateUn modérateur a changé le traitement appliqué à un utilisateur suspect.événementchannel.unbanUn spectateur a été débanni sur la chaîne.événementchannel.unban_request.createUn utilisateur banni a déposé une demande de débannissement.événementchannel.unban_request.resolveUne demande de débannissement a été approuvée, refusée ou annulée.événementchannel.updateLe diffuseur a changé le titre, la catégorie, la langue ou les étiquettes de classification du contenu de la chaîne.événementchannel.vip.addUn utilisateur est devenu VIP de la chaîne.événementchannel.vip.removeUn utilisateur a perdu le statut VIP sur la chaîne.événementchannel.warning.acknowledgeUn utilisateur a pris acte d'un avertissement reçu sur la chaîne.événementchannel.warning.sendUn avertissement a été envoyé à un utilisateur sur la chaîne.événementconduit.shard.disabledEventSub a désactivé un shard de conduit parce que l'état de son transport a changé.événementdrop.entitlement.grantDes spectateurs ont reçu des droits liés aux Drops.événementextension.bits_transaction.createUne transaction en Bits a eu lieu dans une extension.événementstream.offlineLe diffuseur a arrêté de diffuser.événementuser.authorization.grantUn utilisateur a autorisé l'application.événementuser.authorization.revokeL'application a perdu l'autorisation d'un utilisateur.événementuser.updateUn utilisateur a modifié son compte (nom, description, e-mail...).événementuser.whisper.messageL'utilisateur a reçu un chuchotement.événement
155 méthodes et 83 types d'événementsParcourir les groupes
Ce que vous n’écrivez plus
La tuyauterie des jetons
Le jeton d’application est demandé quand un appel en a besoin. Les jetons utilisateur sont renouvelés avant d’expirer, validés chaque heure comme Twitch l’exige, et enregistrés où vous voulez.
Quel jeton pour quel appel
Chaque endpoint sait s’il lui faut le jeton d’application ou celui d’un utilisateur, et lequel.
moderator_id,broadcaster_idetsender_idprennent par défaut l’identité de celui qui agit.Curseurs et tailles de page
awaitsur une liste donne une page,for awaitles parcourt toutes. Les listes de plus de 100 identifiants sont découpées, récupérées en parallèle puis fusionnées.La gestion des 429
Les en-têtes de limite de débit sont suivis pour chaque jeton : les requêtes attendent leur tour au lieu d’échouer. Ce qui peut être retenté sans risque l’est.
La logique de reconnexion
WebSocket, webhooks et conduits partagent un même
on()typé. Reconnexions, réabonnements, vérification des signatures et livraisons en double sont gérés.Deviner la forme des données
Chaque paramètre, chaque réponse et chaque événement est typé. Les événements à plusieurs formes se précisent dès que vous testez leur discriminant.
Trois façons de recevoir les événements
Le même on() pour les trois. Choisissez selon l’endroit où tourne votre code.
| WebSocket | Webhooks | Conduits | |
|---|---|---|---|
| Il vous faut | Rien à héberger | Une URL HTTPS publique | Un processus par shard |
| S’abonne avec | Un jeton utilisateur | Le jeton d’application | Le jeton d’application |
| Survit à un redémarrage | Non, il se réabonne | Oui | Oui |
| Convient pour | Bots, applications de bureau, quelques chaînes | Serveurs et fonctions serverless | Beaucoup de chaînes, réparties sur plusieurs processus |
Par où continuer
- 01Démarrage rapideInstaller, créer une application sur Twitch, faire un premier appel.
- 02Agir au nom d’un utilisateurÉcrire dans le chat, modérer, lancer des sondages : comment le bon jeton est choisi pour vous.
- 03ÉvénementsMessages de chat, follows, abonnements, passages en direct, au moment où ils se produisent.
- 04RecettesDes programmes complets à copier : bot de chat, alertes de direct, outils de modération.
- 05RéférenceChaque méthode, chaque type d’événement, chaque scope, chaque erreur.
- 06Depuis la version 1Ce qui a changé, et le nouveau nom de chaque ancienne méthode.
twitch.api est un projet open source indépendant. Il n’est ni affilié à Twitch Interactive, Inc., ni approuvé par cette société.