tmi-cluster

1.0.1 • Public • Published

tmi-cluster

Features

  • Provides an API endpoint almost identical to tmi.js
  • Manages a cluster of anonymous Twitch IRC connections for unlimited read access
  • Utilizes authorized bot account for write access
  • Mocks join and part events using more reliable tmi.twitch.tv endpoint

Usage

Minimal Example

import tmi from 'tmi.js';
import cluster from 'tmi-cluster';

const client = cluster(tmi).Client({
  identity: {
    username: 'botname',
    password: 'oauth:abcdefxyz..'
  },
  channels: [ '#example_user' ]
});

await client.connect();

client.say('#example_user', 'hello :)');

Cluster Configuration

const client = cluster(tmi).Client({
  identity: {
    username: 'botname',
    password: 'oauth:abcdefxyz..'
  },
  cluster: {
    // how many anonymous connections to keep open
    connections: 10,

    // whether ot not IRC join / part messages shall be
    // replaced by more reliable tmi.twitch.tv endpoint
    mock_membership: true,

    // only applies if mock_membership is true
    // determines how many seconds it should wait before fetching
    // the same list of chatters
    membership_timer_local: 20000,

    // only applies if mock_membership is true
    // determines how many seconds it should wait between fetching
    // different lists of chatters
    membership_timer_global: 20
  }
});

Noticeable Differences to tmi.js

  • Has to be initialized with login credentials. Purely anonymous connections are not possible. Authentication via @twurple/auth-tmi also works if respective API is provided instead of tmi.js
  • client.ping() will return reply from authenticated connection.
  • Additional client.pingAll() method that pings every connection. Reply from authenticated connection is the first entry.
  • client.readyState() will return reply from authenticated connection.
  • Additional client.readyStateAll() method that returns array of all ready states. Reply from authenticated connection is the first entry.
  • [Only when using mock_membership = true] Additional client.chatters(channel) method that returns cached list of viewers connected to chat. This is the exact reply from tmi.twitch.tv
  • [Only when using mock_membership = true] client.on('join', callback) provides an additional callback parameter, indicating the user group of the joined chatter (broadcaster, vips, moderators, staff, admins, global_mods, viewers)

Package Sidebar

Install

npm i tmi-cluster

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

25.1 kB

Total Files

9

Last publish

Collaborators

  • pseudopsycho