|
async function react (client, type, msg) { |
|
if (type === 'PRIVMSG') { |
|
// Remove this, or add it selectively to enable admin-only commands. |
|
if (!global.appSettings.admins.includes(msg.senderUsername.toLowerCase())) return Promise.resolve() |
|
|
|
if (msg.channelName.toLowerCase() === 'twitchdev') { |
|
if (msg.messageText.charAt(0) === '!') { |
|
const args = msg.messageText.substr(1).split(' ') |
|
const command = args[0] |
|
if (command === 'ping') { |
|
await client.say(msg.channelName, 'Pong!') |
|
} |
|
} |
|
} |
|
} else if (type === 'USERNOTICE') { |
|
let parsedEvent |
|
switch (msg.messageTypeID) { |
|
case 'sub': |
|
case 'resub': |
|
case 'extendsub': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
subPlan: msg.eventParams.subPlan, |
|
subPlanName: msg.eventParams.subPlanName, |
|
months: msg.eventParams.cumulativeMonths, |
|
streakMonths: msg.eventParams.streakMonths, |
|
shouldShareStreak: msg.eventParams.shouldShareStreak |
|
} |
|
break |
|
case 'subgift': |
|
case 'anonsubgift': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
subPlan: msg.eventParams.subPlan, |
|
subPlanName: msg.eventParams.subPlanName, |
|
months: msg.eventParams.months, |
|
recipient: { |
|
id: msg.eventParams.recipientID, |
|
name: msg.eventParams.recipientDisplayName, |
|
username: msg.eventParams.recipientUsername |
|
} |
|
} |
|
break |
|
case 'giftpaidupgrade': |
|
case 'anongiftpaidupgrade': |
|
case 'primepaidupgrade': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
promoGiftTotal: msg.eventParams.promoGiftTotal, |
|
promoName: msg.eventParams.promoName, |
|
senderLogin: msg.eventParams.senderLogin |
|
} |
|
break |
|
case 'raid': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
viewerCount: msg.eventParams.viewerCount, |
|
displayName: msg.eventParams.displayName |
|
} |
|
break |
|
case 'ritual': |
|
// New chatter! |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
name: msg.eventParams.ritualName |
|
} |
|
break |
|
case 'bitsbadgetier': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
threshold: msg.eventParams.threshold |
|
} |
|
break |
|
case 'submysterygift': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
amount: msg.eventParams.massGiftCount, |
|
subPlan: msg.eventParams.subPlan |
|
} |
|
break |
|
case 'standardpayforward': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
priorGifterUserName: msg.eventParams.priorGifterUserName, |
|
priorGifterDisplayName: msg.eventParams.priorGifterDisplayName, |
|
recipientDisplayName: msg.eventParams.recipientDisplayName, |
|
recipientUserName: msg.eventParams.recipientUserName |
|
} |
|
break |
|
case 'rewardgift': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
domain: msg.eventParams.domain, |
|
triggerType: msg.eventParams.triggerType, |
|
triggerAmount: msg.eventParams.triggerAmount, |
|
totalRewardCount: msg.eventParams.totalRewardCount |
|
} |
|
break |
|
case 'communitypayforward': |
|
parsedEvent = { |
|
type: msg.messageTypeID, |
|
priorGifterDisplayName: msg.eventParams.priorGifterDisplayName |
|
} |
|
break |
|
default: |
|
console.log('[Twitch] Unhandled messageType!', msg) |
|
parsedEvent = { |
|
type: msg.messageTypeID |
|
} |
|
break |
|
} |
|
|
|
if (msg.channelName.toLowerCase() === 'twitchdev') { |
|
switch (parsedEvent.type) { |
|
case 'sub': |
|
case 'resub': |
|
case 'extendsub': |
|
case 'subgift': |
|
case 'anonsubgift': |
|
case 'giftpaidupgrade': |
|
case 'anongiftpaidupgrade': |
|
case 'primepaidupgrade': |
|
// React! |
|
await client.say(msg.channelName, 'gat gat gat gat gat gat gat') |
|
break |
|
} |
|
} |
|
} |
|
|
|
return Promise.resolve() |
|
} |
|
|
|
module.exports = react |