Some events will only be fired if you are logged in. If you are not familiar with event listeners, please read this.
- Action - Received action message on channel.
- Ban - Username has been banned on a channel.
- Chat - Received message on channel.
- Cheer - Username has cheered to a channel.
- Clearchat - Chat of a channel got cleared.
- Connected - Connected to server.
- Connecting - Connecting to a server.
- Disconnected - Got disconnected from server.
- Emoteonly - Channel enabled or disabled emote-only mode.
- Emotesets - Received the
emote-sets
from Twitch. - Followersonly - Channel enabled or disabled followers-only mode.
- Hosted - Channel is now hosted by another broadcaster.
- Hosting - Channel is now hosting another channel.
- Join - Username has joined a channel.
- Logon - Connection established, sending informations to server.
- Message - Received a message.
- Mod - Someone got modded on a channel.
- Mods - Received the list of moderators of a channel.
- Notice - Received a notice from server.
- Part - User has left a channel.
- Ping - Received PING from server.
- Pong - Sent a PING request ? PONG.
- R9kbeta - Channel enabled or disabled R9K mode.
- Raid - A raid occurred on a channel.
- Reconnect - Trying to reconnect to server.
- Resub - Username has resubbed on a channel.
- Ritual - Username is new to the stream.
- Roomstate - The current state of the channel.
- Serverchange - Channel is no longer located on this cluster.
- Slowmode - Gives you the current state of the channel.
- Subgift - Username has gifted a subscription to a user on the channel.
- Subscribers - Channel enabled or disabled subscribers-only mode.
- Subscription - Username has subscribed to a channel.
- Timeout - Username has been timed out on a channel.
- Unhost - Channel ended the current hosting.
- Unmod - Someone got unmodded on a channel.
- Whisper - Received a whisper.
Received action message on channel. (/me <message>)
Parameters:
channel
: String - Channel nameuserstate
: Object - Userstate objectmessage
: String - Message receivedself
: Boolean - Message was sent by the client
client.on('action', function(channel, userstate, message, self) {
// Don't listen to my own messages..
if (self) return;
// Do your stuff.
});
According to Twitch, the userstate object is always subject to change.
{
'badges': { 'broadcaster': '1', 'warcraft': 'horde' },
'color': '#FFFFFF',
'display-name': 'Schmoopiie',
'emotes': { '25': [ '0-4' ] },
'mod': true,
'room-id': '58355428',
'subscriber': false,
'turbo': true,
'user-id': '58355428',
'user-type': 'mod',
'emotes-raw': '25:0-4',
'badges-raw': 'broadcaster/1,warcraft/horde',
'username': 'schmoopiie',
'message-type': 'action'
}
Username has been banned on a channel.
Parameters:
channel
: String - Channel nameusername
: String - Usernamereason
: String - Reason of the ban can also be null
client.on('ban', function(channel, username, reason) {
// Do your stuff.
});
Received message on channel.
Parameters:
channel
: String - Channel nameuserstate
: Object - Userstate objectmessage
: String - Message receivedself
: Boolean - Message was sent by the client
client.on('chat', function(channel, userstate, message, self) {
// Don't listen to my own messages..
if (self) return;
// Do your stuff.
});
According to Twitch, the user object is always subject to change.
{
'badges': { 'broadcaster': '1', 'warcraft': 'horde' },
'color': '#FFFFFF',
'display-name': 'Schmoopiie',
'emotes': { '25': [ '0-4' ] },
'mod': true,
'room-id': '58355428',
'subscriber': false,
'turbo': true,
'user-id': '58355428',
'user-type': 'mod',
'emotes-raw': '25:0-4',
'badges-raw': 'broadcaster/1,warcraft/horde',
'username': 'schmoopiie',
'message-type': 'chat'
}
Username has cheered to a channel.
Parameters:
channel
: String - Channel nameuserstate
: Object - Userstate objectmessage
: String - Message
client.on('cheer', function(channel, userstate, message) {
// Do your stuff.
});
Note: The amount of bits the user sent is inside the userstate (userstate.bits
) - Read the Twitch API documentation for more information.
Chat of a channel got cleared.
Parameters:
channel
: String - Channel name
client.on('clearchat', function(channel) {
// Do your stuff.
});
Connected to server.
Parameters:
address
: String - Remote addressport
: Integer - Remote port
client.on('connected', function(address, port) {
// Do your stuff.
});
Connecting to a server.
Parameters:
address
: String - Remote addressport
: Integer - Remote port
client.on('connecting', function(address, port) {
// Do your stuff.
});
Got disconnected from server.
Parameters:
reason
: String - Reason why you got disconnected
client.on('disconnected', function(reason) {
// Do your stuff.
});
Channel enabled or disabled emote-only mode.
Parameters:
channel
: String - Channel nameenabled
: Boolean - Returnstrue
if mode is enabled orfalse
if disabled
client.on('emoteonly', function(channel, enabled) {
// Do your stuff.
});
Received the emote-sets
from Twitch.
Parameters:
sets
: String - Your emote sets (always contains the default emoticons set0
)obj
: Object - Your emote sets with IDs and codes received from the Twitch API
client.on('emotesets', function(sets, obj) {
// Here are the emotes I can use:
console.log(obj);
});
Channel enabled or disabled followers-only mode.
Parameters:
channel
: String - Channel nameenabled
: Boolean - Returnstrue
if mode is enabled orfalse
if disabledlength
: Integer - Length in minutes
client.on('followersonly', function(channel, enabled, length) {
// Do your stuff.
});
Channel is now hosted by another broadcaster. This event is fired only if you are logged in as the broadcaster.
Parameters:
channel
: String - Channel name being hostedusername
: String - Username hosting youviewers
: Integer - Viewers countautohost
: Boolean - Auto-hosting
client.on('hosted', function(channel, username, viewers, autohost) {
// Do your stuff.
});
Channel is now hosting another channel.
Parameters:
channel
: String - Channel name that is now hostingtarget
: String - Channel being hostedviewers
: Integer - Viewers count
client.on('hosting', function(channel, target, viewers) {
// Do your stuff.
});
Username has joined a channel. Not available on large channels and is also sent in batch every 30-60secs.
Parameters:
channel
: String - Channel nameusername
: String - Username who joined the channelself
: Boolean - Client has joined the channel
client.on('join', function(channel, username, self) {
// Do your stuff.
});
Connection established, sending informations to server.
client.on('logon', function() {
// Do your stuff.
});
Received a message. This event is fired whenever you receive a chat, action or whisper message.
Parameters:
channel
: String - Channel nameuserstate
: Object - Userstate objectmessage
: String - Message receivedself
: Boolean - Message was sent by the client
client.on('message', function(channel, userstate, message, self) {
// Don't listen to my own messages..
if (self) return;
// Handle different message types..
switch (userstate['message-type']) {
case 'action':
// This is an action message..
break;
case 'chat':
// This is a chat message..
break;
case 'whisper':
// This is a whisper..
break;
default:
// Something else ?
break;
}
});
According to Twitch, the userstate object is always subject to change.
{
'badges': { 'broadcaster': '1', 'warcraft': 'horde' },
'color': '#FFFFFF',
'display-name': 'Schmoopiie',
'emotes': { '25': [ '0-4' ] },
'mod': true,
'room-id': '58355428',
'subscriber': false,
'turbo': true,
'user-id': '58355428',
'user-type': 'mod',
'emotes-raw': '25:0-4',
'badges-raw': 'broadcaster/1,warcraft/horde',
'username': 'schmoopiie',
'message-type': 'action'
}
Someone got modded on a channel.
Important: It doesn't detect if username
is a new moderator, it is triggered when jtv gives the moderator status to someone on a channel. You will see a lot of mod
/ unmod
events on a channel. When a moderator joins a channel, it will take a few seconds for jtv to give the user the moderator status. When leaving a channel, the user gets unmodded.
Parameters:
channel
: String - Channel nameusername
: String - Username
client.on('mod', function(channel, username) {
// Do your stuff.
});
Received the list of moderators of a channel.
Parameters:
channel
: String - Channel namemods
: Array - Moderators of the channel
client.on('mods', function(channel, mods) {
// Do your stuff.
});
Received a notice from server. The goal of these notices is to allow the users to change their language settings and still be able to know programmatically what message was sent by the server. We encourage to use the msg-id
to compare these messages.
Parameters:
channel
: String - Channel namemsgid
: String - Message ID (See known msg-ids below)message
: String - Message received
Known msg-ids:
already_banned
: X is already banned in this room.already_emote_only_on
: This room is already in emote-only mode.already_emote_only_off
: This room is not in emote-only mode.already_subs_on
: This room is already in subscribers-only mode.already_subs_off
: This room is not in subscribers-only mode.bad_ban_admin
: You cannot ban admin X.bad_ban_broadcaster
: You cannot ban the broadcaster.bad_ban_global_mod
: You cannot ban global moderator X.bad_ban_self
: You cannot ban yourself.bad_ban_staff
: You cannot ban staff X.bad_commercial_error
: Failed to start commercial.bad_host_hosting
: This channel is already hosting X.bad_host_rate_exceeded
: Host target cannot be changed more than 3 times every half hour.bad_mod_mod
: X is already a moderator of this room.bad_mod_banned
: X is banned in this room.bad_timeout_admin
: You cannot timeout admin X.bad_timeout_global_mod
: You cannot timeout global moderator X.bad_timeout_self
: You cannot timeout yourself.bad_timeout_staff
: You cannot timeout staff X.bad_unban_no_ban
: X is not banned from this room.bad_unmod_mod
: X is not a moderator of this room.ban_success
: X is now banned from this room.cmds_available
: Commands available to you in this room (use /help for details)..color_changed
: Your color has been changed.commercial_success
: Initiating X second commercial break. Please keep in mind..emote_only_on
: This room is now in emote-only mode.emote_only_off
: This room is no longer in emote-only mode.hosts_remaining
: X host commands remaining this half hour.host_target_went_offline
: X has gone offline. Exiting host modemod_success
: You have added X as a moderator of this room.msg_banned
: You are permanently banned from talking in channel.msg_censored_broadcaster
: Your message was modified for using words banned by X.msg_channel_suspended
: This channel has been suspended.msg_duplicate
: Your message was not sent because you are sending messages too quickly.msg_emoteonly
: This room is in emote only mode.msg_ratelimit
: Your message was not sent because you are sending messages too quickly.msg_subsonly
: This room is in subscribers only mode. To talk, purchase..msg_timedout
: You are banned from talking in X for Y more seconds.msg_verified_email
: This room requires a verified email address to chat.no_help
: No help available.no_permission
: You don't have permission to perform that action.not_hosting
: No channel is currently being hosted.timeout_success
: X has been timed out for length seconds.unban_success
: X is no longer banned from this room.unmod_success
: You have removed X as a moderator of this room.unrecognized_cmd
: Unrecognized command: Xusage_ban
: Usage: "/ban " - Permanently prevent a user from chatting..usage_clear
: Usage: "/clear" - Clear chat history for all users in this room.usage_color
: Usage: "/color " - Change your username color. Color must be..usage_commercial
: Usage: "/commercial [length]" - Triggers a commercial.usage_disconnect
: Usage: "/disconnect" - Reconnects to chat.usage_emote_only_on
: Usage: "/emoteonly" - Enables emote-only mode..usage_emote_only_off
: Usage: "/emoteonlyoff" - Disables emote-only mode..usage_help
: Usage: "/help" - Lists the commands available to you in this room.usage_host
: Usage: "/host " - Host another channel. Use "unhost" to unset host mode.usage_me
: Usage: "/me " - Send an "emote" message in the third person.usage_mod
: Usage: "/mod " - Grant mod status to a user. Use "mods" to list the..usage_mods
: Usage: "/mods" - Lists the moderators of this channel.usage_r9k_on
: Usage: "/r9kbeta" - Enables r9k mode. See http://bit.ly/bGtBDf for details.usage_r9k_off
: Usage: "/r9kbetaoff" - Disables r9k mode.usage_slow_on
: Usage: "/slow [duration]" - Enables slow mode..usage_slow_off
: Usage: "/slowoff" - Disables slow mode.usage_subs_on
: Usage: "/subscribers" - Enables subscribers-only mode..usage_subs_off
: Usage: "/subscribersoff" - Disables subscribers-only mode.usage_timeout
: Usage: "/timeout [duration]" - Temporarily prevent a user from chatting.usage_unban
: Usage: "/unban " - Removes a ban on a user.usage_unhost
: Usage: "/unhost" - Stop hosting another channel.usage_unmod
: Usage: "/unmod " - Revoke mod status from a user..whisper_invalid_self
: You cannot whisper to yourself.whisper_limit_per_min
: You are sending whispers too fast. Try again in a minute.whisper_limit_per_sec
: You are sending whispers too fast. Try again in a second.whisper_restricted_recipient
: That user's settings prevent them from receiving this whisper.
The following msg-ids wont be returned in the notice
event because they are already available as event listeners:
host_off
: Exited hosting mode.host_on
: Now hosting Xno_mods
: There are no moderators for this room.r9k_off
: This room is no longer in r9k mode.r9k_on
: This room is now in r9k mode.room_mods
: The moderators of this room are Xslow_off
: This room is no longer in slow mode.slow_on
: This room is now in slow mode. You may send messages every X seconds.subs_off
: This room is no longer in subscribers-only mode.subs_on
: This room is now in subscribers-only mode.
client.on('notice', function(channel, msgid, message) {
// Do your stuff.
});
User has left a channel.
Parameters:
channel
: String - Channel nameusername
: String - Username who left the channelself
: Boolean - Client has left the channel
client.on('part', function(channel, username, self) {
// Do your stuff.
});
Received PING from server.
client.on('ping', function() {
// Do your stuff.
});
Sent a PING request ? PONG.
Parameters:
latency
: Float - Current latency
client.on('pong', function(latency) {
// Do your stuff.
});
Channel enabled or disabled R9K mode.
Parameters:
channel
: String - Channel nameenabled
: Boolean - Returnstrue
if mode is enabled orfalse
if disabled
client.on('r9kbeta', function(channel, enabled) {
// Do your stuff.
});
A raid occurred on a channel.
Parameters:
channel
: String - Channel nameraider
: String - Channel raidingviewers
: Integer - Number of viewersuserstate
: Object - Userstate
client.on('raid', function({ channel, raider, viewers, userstate }) {
// Do your stuff.
});
Trying to reconnect to server.
client.on('reconnect', function() {
// Do your stuff.
});
Username has resubbed on a channel.
Parameters:
channel
: String - Channel nameusername
: String - Usernamemonths
: Integer - How many monthsmessage
: String - Custom messageuserstate
: Object - Userstatemethods
: Object - Resub methods and plan (such as Prime)
client.on('resub', function(
channel,
username,
months,
message,
userstate,
methods,
) {
// Do your stuff.
});
A ritual has occurred in a channel, username is new to chat.
Parameters:
channel
: String - Channel nameusername
: String - Name of the new chatter.type
: String - Type of ritual that has occurred. Currently, onlynew_chatter
is given.userstate
: Object - Userstate
client.on('ritual', function({ channel, username, type, userstate }) {
// Do your stuff.
});
Triggered upon joining a channel. Gives you the current state of the channel.
Parameters:
channel
: String - Channel namestate
: Object - Current state of the channel
client.on('roomstate', function(channel, state) {
// Do your stuff.
});
According to Twitch, the state object is always subject to change.
{
'broadcaster-lang': null,
'r9k': false,
'slow': false,
'subs-only': false,
'channel': '#schmoopiie'
}
Channel is no longer located on this cluster.
Parameters:
channel
: String - Channel name
client.on('serverchange', function(channel) {
// Do your stuff.
});
Channel enabled or disabled slow mode.
Parameters:
channel
: String - Channel nameenabled
: Boolean - Returnstrue
if mode is enabled orfalse
if disabledlength
: Integer - Slow length value
client.on('slowmode', function(channel, enabled, length) {
// Do your stuff.
});
Channel enabled or disabled subscribers-only mode.
Parameters:
channel
: String - Channel nameenabled
: Boolean - Returnstrue
if mode is enabled orfalse
if disabled
client.on('subscribers', function(channel, enabled) {
// Do your stuff.
});
Username has gifted a subscription to a user on a channel.
Parameters:
channel
: String - Channel nameusername
: String - Gifter usernamerecipient
: String - Giftee usernamemethod
: Object - Methods and plan used to subscribeuserstate
: Object - Userstate
client.on('subgift', function(channel, username, recipient, method, userstate) {
// Do your stuff.
});
Note: more information is available with the userstate :
userstate['user-id']
: Gifter Iduserstate['msg-param-recipient-id']
: Recipient Iduserstate['msg-param-recipient-display-name']
: Recipient Display Name
Username has subscribed to a channel.
Parameters:
channel
: String - Channel nameusername
: String - Usernamemethod
: Object - Methods and plan used to subscribemessage
: String - Custom messageuserstate
: Object - Userstate
client.on('subscription', function(
channel,
username,
method,
message,
userstate,
) {
// Do your stuff.
});
Username has been timed out on a channel.
Parameters:
channel
: String - Channel nameusername
: String - Usernamereason
: String - Reason of the timeout can also be nullduration
: Integer - Duration of the timeout
client.on('timeout', function(channel, username, reason, duration) {
// Do your stuff.
});
Channel ended the current hosting.
Parameters:
channel
: String - Channel nameviewers
: Integer - Viewer count
client.on('unhost', function(channel, viewers) {
// Do your stuff.
});
Someone got unmodded on a channel.
Important: It doesn't detect if username
got removed from moderators list. You will see a lot of mod
/ unmod
events on a channel. When a moderator joins a channel, it will take a few seconds for jtv to give the user the moderator status. When leaving a channel, the user gets unmodded.
Parameters:
channel
: String - Channel nameusername
: String - Username
client.on('unmod', function(channel, username) {
// Do your stuff.
});
Received a whisper. You won't receive whispers from ignored users.
Parameters:
from
: String - Username who sent the messageuserstate
: Object - Userstate objectmessage
: String - Message receivedself
: Boolean - Message was sent by the client
client.on('whisper', function(from, userstate, message, self) {
// Don't listen to my own messages..
if (self) return;
// Do your stuff.
});
According to Twitch, the userstate object is always subject to change.
{
'badges': null,
'color': '#FFFFFF',
'display-name': 'Schmoopiie',
'emotes': { '25': [ '0-4' ] },
'message-id': '123',
'thread-id': '1234567_12345678',
'turbo': true,
'user-id': '58355428',
'user-type': null,
'badges-raw': null,
'emotes-raw': '25:0-4',
'username': 'schmoopiie',
'message-type': 'whisper'
}