multi-stream-chatbot
Version:
Chatbot framework that listens and sends messages to multiple streaming platforms simultaneously
47 lines (37 loc) • 1.24 kB
JavaScript
class ActionSwitcher {
constructor(actions, { blacklisted = [] }) {
this.blacklisted = blacklisted
this.actions = actions
}
async getMessages(message, ctx) {
var messages = []
for (action of this.actions) {
const generatedMessage = await action.getMessage(message, ctx)
if (!generatedMessage) {
continue
}
const actionName = this.getActionName(action)
if (this.isBacklisted(actionName)) {
console.log(
`* Streambot ignored blacklisted ${actionName} command "${message}" -> "${generatedMessage}"`
)
} else {
messages.push(generatedMessage)
console.log(
`* Streambot executed ${actionName} command for "${message}" -> "${generatedMessage}"`
)
}
}
return messages
}
getActionName(action) {
return action.constructor.name
}
isBacklisted(actionName) {
if (!this.blacklisted) {
return false
}
return actionName && this.blacklisted.includes(actionName)
}
}
module.exports = ActionSwitcher