Skip to content

Very simple TwitchApi class and TypeScript interfaces for all Twitch API endpoints

Notifications You must be signed in to change notification settings

DmitryScaletta/ts-twitch-api

Repository files navigation

ts-twitch-api

Very simple TwitchApi class and TypeScript interfaces for all Twitch API endpoints

  • Auto-generated from twitch-api-swagger
  • Uses fetch under 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-api

Usage

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();

About

Very simple TwitchApi class and TypeScript interfaces for all Twitch API endpoints

Topics

Resources

Stars

Watchers

Forks