corsica-irc
Advanced tools
Comparing version
69
index.js
@@ -18,7 +18,14 @@ /* Description: | ||
var logger = { | ||
log: console.log.bind(console, '[irc]'), | ||
warn: console.warn.bind(console, '[irc]'), | ||
error: console.error.bind(console, '[irc]'), | ||
}; | ||
module.exports = function (corsica) { | ||
console.log('[corsica irc] Starting up'); | ||
logger.log('Starting up'); | ||
var settingsConfig = corsica.settings.setup('corsica-irc', { | ||
server: 'irc.example.org', | ||
port: 6667, | ||
channels: ['#bots'], | ||
@@ -28,2 +35,5 @@ nick: 'corsica', | ||
var ircClient; | ||
var oldSettings; | ||
settingsConfig.get().then(function (settings) { | ||
@@ -35,13 +45,11 @@ if (typeof settings.channels === 'string') { | ||
var ircClient = new irc.Client(settings.server, settings.nick, { | ||
oldSettings = settings; | ||
ircClient = new irc.Client(settings.server, settings.nick, { | ||
channels: settings.channels, | ||
port: settings.port, | ||
}); | ||
ircClient.addListener('registered', function (message) { | ||
console.log('[corsica irc] Connect to server.'); | ||
settingsConfig.get() | ||
.then(function (settings) { | ||
settings.nick = message.args[0]; | ||
settingsConfig.set(settings); | ||
}); | ||
logger.log('Connected to server.'); | ||
}); | ||
@@ -63,10 +71,47 @@ | ||
ircClient.addListener('error', function(message) { | ||
console.error('[corsica irc] Something has gone wrong.'); | ||
console.error(message.stack || message); | ||
logger.error('Something has gone wrong.'); | ||
logger.error(message.stack || message); | ||
}); | ||
}) | ||
.catch(function (err) { | ||
console.error('[corsica irc] Something has gone wrong.'); | ||
console.error(err.stack || err); | ||
logger.error('Something has gone wrong.'); | ||
logger.error(err.stack || err); | ||
}); | ||
settingsConfig.on('updated', function(newSettings) { | ||
logger.log('Settings updated'); | ||
if (ircClient === undefined) { | ||
return; | ||
} | ||
// Server and/or Port | ||
if (newSettings.server !== oldSettings.server || newSettings.port !== oldSettings.port) { | ||
logger.log('Changing servers to:', newSettings.server + ':' + newSettings.port); | ||
ircClient.disconnect(function() { | ||
ircClient.opt = corsica.utils.merge(ircClient.opt, newSettings); | ||
ircClient.connect(); | ||
}); | ||
return; | ||
} | ||
// Nick | ||
if (newSettings.nick !== oldSettings.nick) { | ||
logger.log('Changing nick to', newSettings.nick); | ||
ircClient.send('NICK', newSettings.nick); | ||
ircClient.opt.nick = newSettings.nick; | ||
} | ||
// Channels | ||
oldSettings.channels.forEach(function(oldChan) { | ||
if (newSettings.channels.indexOf(oldChan) === -1) { | ||
logger.log('Leaving', oldChan); | ||
ircClient.part(oldChan); | ||
} | ||
}); | ||
newSettings.channels.forEach(function(newChan) { | ||
if (oldSettings.channels.indexOf(newChan) === -1) { | ||
logger.log('Joining', newChan); | ||
ircClient.join(newChan); | ||
} | ||
}); | ||
}); | ||
}; |
{ | ||
"name": "corsica-irc", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "A Corsica plugin to provide IRC messaging.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
4009
43.08%97
67.24%