twitch-js
v2.0.0-beta.45
Published
Javascript library for the Twitch Messaging Interface.
Downloads
6,807
Maintainers
Readme
TwitchJS
A community-centric, community-supported Twitch JavaScript SDK.
Features
- Aligns with official Twitch IRC documentation
- Forward-compatible, low-level, minimally-assertive architecture
- Supports Node environments
- Supports Browsers
- Supports TypeScript
- Connect to multiple channels
- Chat commands
- Rate limiter
In progress...
Here are the planned features. If you feel something is missing, create an issue or submit a PR against the next branch.
Documentation
- Getting started
- Authentication
- Examples
- Interacting with Twitch chat
- Making requests to Twitch API
- Reference
Getting started
Module bundler (CJS/ESM)
If you are using a module bundler, such as Webpack, Browserify, or a in a Node environment:
Add TwitchJS to your project:
npm install --save twitch-js
Import TwitchJS
// ES2015 syntax import TwitchJs from 'twitch-js' // OR ES5 syntax var TwitchJs = require('twitch-js') const twitchJs = new TwitchJs({ username, token })
Browser (IIFE)
If you are not using a module bundler, precompiled builds are available in the
dist
folder:
- Include a script tag in your HTML:
<script src="//unpkg.com/twitch-js@>2.0.0-beta.31"></script>
- Consume the library:
<script type="javascript"> const twitchJs = new window.TwitchJs({ username, token }) </script>
Authentication
Obtaining a client ID
To obtain a client ID, follow the instructions found in the Twitch Developers documentation.
Obtaining a token
With a client ID, tokens may be generated on behalf of your users.
To quickly get started without a client ID, you may generate token using the following, community-maintained, sites:
Refreshing tokens
To help with refreshing tokens, an onAuthenticationFailure
function may be
provided to the Messaging and API clients. onAuthenticationFailure()
must
return a Promise
that resolves with the refreshed token. Upon resolution, any
actions that yielded an expired token response will be retried with the new,
refreshed token.
Handling token refresh example
// Optionally, use fetchUtil to help.
import fetchUtil from 'twitch-js/lib/utils/fetch'
const refreshToken = 'eyJfaWQmNzMtNGCJ9%6VFV5LNrZFUj8oU231/3Aj'
const clientId = 'fooid'
const secret = 'barbazsecret'
const onAuthenticationFailure = () =>
fetchUtil('https://id.twitch.tv/oauth2/token', {
method: 'post',
search: {
grant_type: 'refresh_token',
refresh_token: refreshToken,
client_id: clientId,
client_secret: clientSecret,
},
}).then((response) => response.accessToken)
const token = 'cfabdegwdoklmawdzdo98xt2fo512y'
const username = 'ronni'
const twitchJs = new TwitchJs({ token, username, onAuthenticationFailure })
twitchJs.chat.connect().then((globalUserState) => {
// Do stuff ...
})
See Refreshing access tokens for more information.
More information
See the Twitch Developers documentation for more information on authentication.
Examples
Examples are provided via CodeSandbox:
Contribution guidelines
If you wish to contribute, please see the CONTRIBUTING doc.
Special thanks
Schmoopiie and all the
original contributors of
tmi.js
.
License
MIT
TwitchJS is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Twitch, or any of its subsidiaries or its affiliates. The name "Twitch" as well as related names, marks, emblems and images are registered trademarks of Twitch.