Skip to content

Instantly share code, notes, and snippets.

@matematikaadit
Last active January 23, 2017 11:39
Show Gist options
  • Save matematikaadit/823884fae018daa4ba9473c9bcea5d48 to your computer and use it in GitHub Desktop.
Save matematikaadit/823884fae018daa4ba9473c9bcea5d48 to your computer and use it in GitHub Desktop.
var NetSocket = require("net").Socket;
var IrcSocket = require("irc-socket");
var parse = require("irc-message").parse;
class Bot {
constructor(config) {
var netSocket = new NetSocket();
var opt = {
socket: netSocket,
port: 6667
};
Object.assign(opt, config);
this.ircSocket = IrcSocket(opt);
}
connect() {
this.ircSocket.connect();
this._register_callbacks();
}
_register_callbacks() {
this.ircSocket.on('data', function(message) {
var message = parse(message);
var content;
var parsed_ctcp;
var is_channel_message = false;
var is_private_message = false;
if (is_conversation(message)) {
if (message.params[0][0] === '#') {
is_channel_message = true;
} else {
is_private_message = true;
}
}
if (parsed_ctcp) {
this._handle_ctcp_message(message);
}
if (is_channel_message) {
this._handle_channel_message(message);
}
if (is_private_message) {
this._handle_private_message(message);
}
});
}
_handle_ctcp_message(message) {
}
_handle_channel_message(message) {
}
_handle_private_message(message) {
}
}
function is_conversation(message) {
return true;
}
const config = {
server: 'chat.freenode.net',
nicknames: ['example', 'example_'],
username: 'example',
realname: 'example',
password: 'example',
channels: ['#example']
};
var bot = new Bot(config);
bot.connect();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment