ts-twitch-api
v0.3.1
Published
Very simple TwitchApi class and TypeScript interfaces for all Twitch API endpoints
Maintainers
Readme
ts-twitch-api
Very simple TwitchApi class and TypeScript interfaces for all Twitch API endpoints
- Auto-generated from twitch-api-swagger
- Uses
fetchunder the hood - Includes types for all endpoints
- Request Query Parameters
- Request Body
- Response Body
- Includes descriptions for the fields
Installation
npm i ts-twitch-api
pnpm i ts-twitch-api
yarn add ts-twitch-apiUsage
Types only
import type {
UpdateAutoModSettingsParams,
UpdateAutoModSettingsBody,
UpdateAutoModSettingsResponse,
} from "ts-twitch-api";
const updateAutoModSettings = async (
params: UpdateAutoModSettingsParams,
body: UpdateAutoModSettingsBody,
) => {
const searchParams = new URLSearchParams(params);
const url = `https://api.twitch.tv/helix/moderation/automod/settings?${searchParams}`;
const response = await fetch(url, {
method: "PUT",
body: JSON.stringify(body),
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
"Client-Id": process.env.CLIENT_ID,
"Content-Type": "application/json",
},
});
return response.json() as Promise<UpdateAutoModSettingsResponse>;
};TwitchApi class
import { TwitchApi } from "ts-twitch-api";
const twitchApi = new TwitchApi({
accessToken: process.env.ACCESS_TOKEN,
clientId: process.env.CLIENT_ID,
});
const response = await twitchApi.chat.updateChatSettings(
// query params
{ broadcaster_id: "1", moderator_id: "2" },
// body
{ emote_mode: true },
);
if (response.ok) {
console.log(response.data);
} else {
console.error(response.status);
}
const streams = await twitchApi.streams.getStreams(
// some endpoints accept multiple ids like this: `id=1234&id=5678`
{ user_id: ["1", "2"] },
// override accessToken and/or clientId for different requests
{
accessToken: "<accessToken>",
clientId: "<clientId>",
},
);
if (streams.ok) {
console.log(streams.data);
}
// pass fetch options via RequestInit object
const ac = new AbortController();
const users = twitchApi.users.getUsers(
{ id: ["1", "2"] },
{ requestInit: { signal: ac.signal } },
);
ac.abort();