tmi-emote-parse
Load and parse Twitch, BTTV, FFZ and 7TV emotes and badges from messages for multiple channels.
⚠ This module is mainly designed to be integrated in a https://github.com/tmijs/tmi.js environment but can also be used as a standalone with limited features.
Table of Contents
Installation
Install using npm:
npm install tmi-emote-parse
Usage
Without tmi.js
const emoteParser = require("tmi-emote-parse");
emoteParser.setDebug(true);
emoteParser.events.on("error", e => {
console.log("Error:", e);
})
emoteParser.setTwitchCredentials("<ClientID>", "<OAuth>");
emoteParser.loadAssets("twitch");
emoteParser.loadAssets("twitchdev");
emoteParser.events.on("emotes", (event) => {
console.log(emoteParser.getAllEmotes(event.channel));
})
emoteParser.events.on("badges", (event) => {
console.log(emoteParser.getAllBadges(event.channel));
})
With tmi.js
const emoteParser = require("tmi-emote-parse");
emoteParser.setDebug(true);
emoteParser.events.on("error", e => {
console.log("Error:", e);
})
emoteParser.setTwitchCredentials("<ClientID>", "<OAuth>");
emoteParser.loadAssets("twitch");
emoteParser.loadAssets("twitchdev");
const tmi = require("tmi.js");
client = new tmi.Client({
options: {
debug: false
},
connection: {
reconnect: true,
secure: true
},
identity: {
username: ,
password:
},
channels: [ '#twitch', '#twitchdev' ]
});
client.connect().catch(console.error);
client.on('message', (channel, userstate, message, self) => {
console.log(emoteParser.replaceEmotes(message, userstate, channel, self));
console.log(emoteParser.getBadges(userstate, channel));
});
Documentation
Functions
emoteParser.setTwitchCredentials()
Set Twitch API credentials for User-ID requests on the Twitch Helix API endpoint. (Void)
Parameters:
clientId: String - Twitch API clientId
oauth: String - Twitch API OAuth token (matching the clientId)
emoteParser.setTwitchCredentials("<ClientID>", "<OAuth>");
emoteParser.loadAssets()
Load Emotes and Badges of a specific Twitch channel. (Void)
Parameters:
channel: String - Channel name
options: Object - Load only specific providers [Defaults to loading all] (optional)
options["bttv"]: Boolean - Load BetterTTV Emotes
options["ffz"]: Boolean - Load FrankerFaceZ Emotes
options["7tv"]: Boolean - Load 7TV Emotes
emoteParser.loadAssets("twitch");
emoteParser.loadAssets("twitchdev", { "bttv": true, "ffz": false, "7tv": false });
emoteParser.getLoaded()
Check the loaded status of all channels or one specific channel. (Object)
Parameters:
channel: String - Channel name (optional)
console.log(emoteParser.getLoaded("twitch"));
Returns something like this:
{
"twitch": { channel: 'twitch', emotes: true, badges: true }
}
emoteParser.getLoadedDetailed()
Check the loaded status of all channels or one specific channel. (Object)
Parameters:
channel: String - Channel name (optional)
console.log(emoteParser.getLoadedDetailed("twitch"));
Returns something like this:
{
"twitch": { channel: 'twitch', emotes: { "all": false, "bttv": { global: true, channel: true }, "ffz": { global: true, channel: true }, "7tv": { global: true, channel: false }}, badges: true }
}
emoteParser.getAllBadges()
Return all badges present in the chat for one specific channel. (Array)
Parameters:
channel: String - Channel name
console.log(emoteParser.getAllBadges("twitch"));
Returns something like this:
[{
name: 'bits/1000',
info: 'cheer 1000',
img: 'https://static-cdn.jtvnw.net/badges/v1/0d85a29e-79ad-4c63-a285-3acd2c66f2ba/3'
}, ...]
emoteParser.getAllEmotes()
Return all BTTV & FFZ emotes present in the chat for one specific channel. (Array)
Parameters:
channel: String - Channel name
console.log(emoteParser.getAllEmotes("twitch"));
Returns something like this:
[{
name: 'ariW',
type: 'bttv',
img: 'https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/3x'
}, ...]
emoteParser.getEmotes()
⚠ tmi.js only: Return all unique emotes in a single message. (Array)
Parameters:
message: String - Chat message
userstate: Object - Twitch userstate object (tmi.js)
userstate["badges-raw"]: String - User badges
...
channel: String - Channel name
console.log(emoteParser.getEmotes("LUL LUL", userstate, "twitch"));
Returns something like this:
[{
code: 'LUL',
img: 'https://static-cdn.jtvnw.net/emoticons/v2/425618/default/dark/3.0',
type: 'twitch'
}]
emoteParser.getBadges()
⚠ tmi.js only: Return all badges a message author uses for one specific channel. (Array)
Parameters:
userstate: Object - Twitch userstate object (tmi.js)
userstate["badges-raw"]: String - User badges
...
channel: String - Channel name
console.log(emoteParser.getBadges(userstate, "twitch"));
Returns something like this:
[{
name: 'bits/1000',
info: 'cheer 1000',
img: 'https://static-cdn.jtvnw.net/badges/v1/0d85a29e-79ad-4c63-a285-3acd2c66f2ba/3'
}, ...]
emoteParser.replaceEmotes()
⚠ tmi.js only: Parses all legacy Twitch, BTTV and FFZ emotes to HTML in the message for one specific channel. (String)
Parameters:
message: String - Chat message
userstate: Object - Twitch userstate object (tmi.js)
userstate["emotes"]: Object - Used emotes in message
...
channel: String - Channel name
console.log(emoteParser.replaceEmotes("I can see you ariW", userstate, "twitch"));
Returns something like this:
'I can see you <img class="message-emote" src="https://cdn.betterttv.net/emote/56fa09f18eff3b595e93ac26/3x"/>'
emoteParser.setDebug()
Switch debug mode on/off - will impact error events (Debug mode default is off). (Void)
Parameters:
active: Boolean - Debug mode state to set
emoteParser.setDebug(false);
Events
Emotes
Event fires after BTTV & FFZ emotes for any channel have finished loading. (Object)
Parameters:
event: Object - Event
event.channel: String - Channel name
emoteParser.events.on("emotes", (event) => {
console.log(event);
})
Returns something like this:
{ channel: 'twitchdev' }
Badges
Event fires after Twitch badges for any channel have finished loading. (Object)
Parameters:
event: Object - Event
event.channel: String - Channel name
emoteParser.events.on("badges", (event) => {
console.log(event);
})
Returns something like this:
{ channel: 'twitchdev' }
Loaded
Event fires after all badges and emotes for any channel have finished loading. (Object)
Parameters:
event: Object - Event
event.channel: String - Channel name
emoteParser.events.on("loaded", (event) => {
console.log(event);
})
Returns something like this:
{ channel: 'twitchdev' }
Error
Event fires iff debug mode is enabled and any error on load occurs for any channel. (Object)
Parameters:
event: Object - Event
event.channel: String - Channel name
event.error: String - Error message
emoteParser.events.on("error", (event) => {
console.log(event);
})
Returns something like this:
{ channel: 'twitchdev', error: 'Failed to load FFZ global emotes for twitchdev' }
Thanks for using the project! 💜
评论