kustombot
Version:
A customizable bot for Twitch
75 lines • 5.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tmi = require("tmi.js");
function KustomBot(options) {
const client = tmi.client(options);
const messageHandlers = [];
const connectionHandlers = [];
const commandHandlers = {};
client.on("message", callMessageHandlers);
client.on("message", callCommandHandlers);
client.on("connected", callConnectionHandlers);
function callMessageHandlers(channel, data, msg, self) {
messageHandlers.forEach((handler) => {
handler(channel, data, msg, self);
});
}
function callConnectionHandlers(addr, port) {
connectionHandlers.forEach((handler) => {
handler(addr, port);
});
}
function callCommandHandlers(channel, data, msg, self) {
if (self) {
return;
}
const words = msg.trim().split(/\s+/);
const command = words[0];
const args = words.slice(1);
if (commandHandlers[command]) {
commandHandlers[command](channel, data, args, self);
}
}
function addMessageHandler(handler) {
messageHandlers.push(handler);
}
function addConnectionHandler(handler) {
connectionHandlers.push(handler);
}
function setCommandHandler(command, handler) {
commandHandlers[command] = handler;
}
function removeMessageHandler(handler) {
const index = messageHandlers.indexOf(handler);
if (index >= 0) {
messageHandlers.splice(index, 1);
return true;
}
return false;
}
function removeConnectionHandler(handler) {
const index = connectionHandlers.indexOf(handler);
if (index >= 0) {
connectionHandlers.splice(index, 1);
return true;
}
return false;
}
function removeCommandHandler(command) {
if (commandHandlers[command]) {
delete commandHandlers[command];
return true;
}
return false;
}
return Object.assign(client, {
addMessageHandler,
addConnectionHandler,
setCommandHandler,
removeMessageHandler,
removeConnectionHandler,
removeCommandHandler,
});
}
exports.default = KustomBot;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3VzdG9tYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2t1c3RvbWJvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhCQUE4QjtBQUc5QixTQUF3QixTQUFTLENBQUMsT0FBb0I7SUFDcEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxNQUFNLGVBQWUsR0FBRyxFQUEyQixDQUFDO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsRUFBOEIsQ0FBQztJQUMxRCxNQUFNLGVBQWUsR0FBRyxFQUFtQyxDQUFDO0lBRTVELE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBRS9DLFNBQVMsbUJBQW1CLENBQzFCLE9BQWUsRUFDZixJQUF1QixFQUN2QixHQUFXLEVBQ1gsSUFBYTtRQUViLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUN4RCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsbUJBQW1CLENBQzFCLE9BQWUsRUFDZixJQUF1QixFQUN2QixHQUFXLEVBQ1gsSUFBYTtRQUViLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1QixJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUE0QjtRQUNyRCxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLG9CQUFvQixDQUFDLE9BQStCO1FBQzNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsT0FBNEI7UUFDdEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUyxvQkFBb0IsQ0FBQyxPQUE0QjtRQUN4RCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNkLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUFDLE9BQStCO1FBQzlELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLG9CQUFvQixDQUFDLE9BQWU7UUFDM0MsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDM0IsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLHVCQUF1QjtRQUN2QixvQkFBb0I7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQTdGRCw0QkE2RkMifQ==