From 777808182320e0584a38e2ae9fdfb6e8e7d99973 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sat, 15 Oct 2016 20:59:27 +0100 Subject: Move set topic and join channel functions to commands.js --- commands.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 commands.js (limited to 'commands.js') diff --git a/commands.js b/commands.js new file mode 100644 index 0000000..b8f53f5 --- /dev/null +++ b/commands.js @@ -0,0 +1,34 @@ +var client + +module.exports.init = function(myClient) { + client = myClient +} + +module.exports.setTopic = function(channel, topic) { + client.raw("TOPIC", channel, topic); +} + +module.exports.joinChannel = function (channel, sendJoin) { + + var channelObj = client.channel(channel); + if (sendJoin) { + channelObj.join(); + channelObj.say("beep"); + } + chanId = $(".active.chat").attr("data-id") + + $(".active").removeClass("active"); + + $(".ui.menu").append(""+channel+""); + $("#chan-container").append("
"); + + var chanTab = $("[data-tab='"+ channel +"'].tab"); + + chanTab.append("
"); + chanTab.append("
"); + chanTab.append("
"); + + $('.menu .item').tab({history:false}); + + numChans++; +} -- cgit v1.2.3 From 1dd55949f2d53bf48ca016ab2d4acff172c443b4 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 16 Oct 2016 19:53:23 +0100 Subject: Fix part command, refactoring --- commands.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ globals.js | 5 +++++ handlers.js | 7 ++++--- index.js | 5 ++++- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 globals.js (limited to 'commands.js') diff --git a/commands.js b/commands.js index b8f53f5..6bffb76 100644 --- a/commands.js +++ b/commands.js @@ -1,15 +1,48 @@ var client +var globals = require('./globals.js') module.exports.init = function(myClient) { client = myClient } +function sendMsg(message, channel) { + client.say(channel, message); + var chanTab = $("[data-tab='"+ channel +"'].chat"); + chanTab.append("

<" + myNick + "> " + message +"

"); + chanTab.scrollTop(chanTab.prop("scrollHeight")); +} + +function sendPm(message, nick) { + + var chanTab = $("[data-tab="+nick+"].tab"); + $(".active").removeClass("active"); + numChans = globals.channels.length + if (chanTab.length == 0) { + $(".ui.menu").append(""+nick+""); + $("#chan-container").append("
"); + chanTab = $("[data-tab="+nick+"].tab"); + chanTab.append("
"); + + $('.menu .item').tab({history:false}); + globals.channels.push(nick) + numChans++; + } + $("[data-tab="+nick+"]").addClass("active"); + var chatTab = $("[data-tab="+nick+"].chat"); + console.log(nick + ': ' + message); + client.say(nick, message); + chatTab.append("

<" + myNick + "> " + message +"

"); + chatTab.scrollTop(chanTab.prop("scrollHeight")); +} + + module.exports.setTopic = function(channel, topic) { client.raw("TOPIC", channel, topic); } module.exports.joinChannel = function (channel, sendJoin) { + numChans = globals.channels.length var channelObj = client.channel(channel); if (sendJoin) { channelObj.join(); @@ -32,3 +65,16 @@ module.exports.joinChannel = function (channel, sendJoin) { numChans++; } + +function removeChannel(channel, sendPart) { + var channelObj = client.channel(channel) + chanId = $("[data-tab='"+channel+"'].chat").attr("data-id"); + $("[data-tab='"+channel+"']").remove(); + if (sendPart) { + channelObj.part(); + } + while ($("[data-id="+(chanId-1)+"]").length == 0 && chanId >=0) { + chanId--; + } + $("[data-id="+(chanId-1)+"]").addClass("active"); +} diff --git a/globals.js b/globals.js new file mode 100644 index 0000000..a0c689b --- /dev/null +++ b/globals.js @@ -0,0 +1,5 @@ +module.exports.channels = ['status'] + +module.exports.pms = [] + +module.exports.networks = [] diff --git a/handlers.js b/handlers.js index 9b956c3..ffbb4f4 100644 --- a/handlers.js +++ b/handlers.js @@ -2,8 +2,8 @@ var linkify = require("linkifyjs"); var linkifyHtml = require('linkifyjs/html'); var util = require("./util.js") var commands = require("./commands.js") - -var numChans = 1; +var globals = require("./globals.js") +var numChans = globals.channels.length + globals.pms.length; var channels; var client; var myNick = "" @@ -69,7 +69,7 @@ function receiveMsg(target, from, message) { // target: "_blank" // }); // console.log(message.autoLink()); - + numChans = globals.channels.length console.log(from + ' => '+ target +': ' + message); if (target === client.user.nick) { @@ -84,6 +84,7 @@ function receiveMsg(target, from, message) { chanTab.append("
"); $('.menu .item').tab({history:false}); + global.channels.push(target) numChans++; chatTab = $("[data-tab="+ target +"].chat"); } diff --git a/index.js b/index.js index d6d0a62..46eeb26 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ var config = require('./config.json') var pjson = require('./package.json'); var handlers = require('./handlers.js'); var commands = require('./commands.js'); +var globals = require('./globals.js') var debugmiddleware = require('./debugmiddleware.js'); const progName = pjson.name; const version = pjson.version; @@ -104,7 +105,7 @@ function humanize(size) { return s + ' ' + units[ord]; } -var numChans = 1; +var numChans = globals.channels.length $("#send-message").keypress(function(e) { if(e.which == 13) { var message = $("#send-message").val(); @@ -157,6 +158,7 @@ function sendPm(message, nick) { var chanTab = $("[data-tab="+nick+"].tab"); $(".active").removeClass("active"); + numChans = globals.channels.length if (chanTab.length == 0) { $(".ui.menu").append(""+nick+""); $("#chan-container").append("
"); @@ -164,6 +166,7 @@ function sendPm(message, nick) { chanTab.append("
"); $('.menu .item').tab({history:false}); + globals.channels.push(nick) numChans++; } $("[data-tab="+nick+"]").addClass("active"); -- cgit v1.2.3 From 63405f05a0406e55daf1fb4bfb00b324f2bf5f7e Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 16 Oct 2016 20:38:10 +0100 Subject: Fix channel list function --- commands.js | 10 +++++- handlers.js | 13 ++++++++ index.js | 104 ++++-------------------------------------------------------- 3 files changed, 29 insertions(+), 98 deletions(-) (limited to 'commands.js') diff --git a/commands.js b/commands.js index 6bffb76..5ab1d5e 100644 --- a/commands.js +++ b/commands.js @@ -66,7 +66,7 @@ module.exports.joinChannel = function (channel, sendJoin) { numChans++; } -function removeChannel(channel, sendPart) { +module.exports.removeChannel = function(channel, sendPart) { var channelObj = client.channel(channel) chanId = $("[data-tab='"+channel+"'].chat").attr("data-id"); $("[data-tab='"+channel+"']").remove(); @@ -78,3 +78,11 @@ function removeChannel(channel, sendPart) { } $("[data-id="+(chanId-1)+"]").addClass("active"); } + +module.exports.whois = function(nick) { + client.whois(nick); +} + +module.exports.list = function() { + client.raw("LIST") +} diff --git a/handlers.js b/handlers.js index 0abb297..c4adbd7 100644 --- a/handlers.js +++ b/handlers.js @@ -82,6 +82,19 @@ module.exports.handleCommands = function(myClient) { }) + client.on('channel list', function(event) { + var statusTab = $("[data-tab='status'].chat"); + statusTab.append("

Channel List:

") + event.forEach( function(channel) { + if (channel.topic.length == 0) { + statusTab.append("

"+channel.channel+" ("+channel.num_users+")

"); + } else { + statusTab.append("

"+channel.channel+" ("+channel.num_users+") : "+channel.topic+"

"); + } + statusTab.scrollTop(statusTab.prop("scrollHeight")); + }) + }) + } function receiveMsg(target, from, message) { diff --git a/index.js b/index.js index 46eeb26..e9a6f7c 100644 --- a/index.js +++ b/index.js @@ -116,16 +116,16 @@ $("#send-message").keypress(function(e) { if (message.length > 6) { channel = message.substring(6, message.length); } - removeChannel(channel, true); + commands.removeChannel(channel, true); } else if (message.indexOf("/whois") == 0) { - console.log("whois "+message.substring(7, message.length)); - client.whois(message.substring(7, message.length)); + commands.whois(message.substring(7, message.length)) + } else if (message.indexOf("/list") == 0) { - client.list(); + commands.list(); } else if (message.indexOf("/msg") == 0) { nick = message.split(" ")[1]; message = message.substring(6+nick.length, message.length); - sendPm(message, nick); + commands.sendPm(message, nick); } else if (message.indexOf("/topic") == 0) { var channel = $(".tab.active").attr("data-tab") topic = message.substring(7, message.length); @@ -137,58 +137,16 @@ $("#send-message").keypress(function(e) { } else { var tab = $(".tab.active").attr("data-tab"); if (tab.startsWith("#")) { - sendMsg(message, channel); + commands.sendMsg(message, channel); } else { - sendPm(message, tab); + commands.sendPm(message, tab); } } $("#send-message").val(''); } }); -function sendMsg(message, channel) { - client.say(channel, message); - var chanTab = $("[data-tab='"+ channel +"'].chat"); - chanTab.append("

<" + myNick + "> " + message +"

"); - chanTab.scrollTop(chanTab.prop("scrollHeight")); -} - -function sendPm(message, nick) { - - var chanTab = $("[data-tab="+nick+"].tab"); - $(".active").removeClass("active"); - numChans = globals.channels.length - if (chanTab.length == 0) { - $(".ui.menu").append(""+nick+""); - $("#chan-container").append("
"); - chanTab = $("[data-tab="+nick+"].tab"); - chanTab.append("
"); - - $('.menu .item').tab({history:false}); - globals.channels.push(nick) - numChans++; - } - $("[data-tab="+nick+"]").addClass("active"); - var chatTab = $("[data-tab="+nick+"].chat"); - console.log(nick + ': ' + message); - client.say(nick, message); - chatTab.append("

<" + myNick + "> " + message +"

"); - chatTab.scrollTop(chanTab.prop("scrollHeight")); -} - -function removeChannel(channel, sendPart) { - chanId = $("[data-tab='"+channel+"'].chat").attr("data-id"); - $("[data-tab='"+channel+"']").remove(); - if (sendPart) { - client.part(channel); - } - while ($("[data-id="+(chanId-1)+"]").length == 0 && chanId >=0) { - chanId--; - } - $("[data-id="+(chanId-1)+"]").addClass("active"); -} - function createListeners(client) { @@ -196,11 +154,6 @@ client.addListener('error', function(message) { console.log('error: ', message); }); -client.addListener('registered', function() { - channels.forEach(function(channel) { - joinChannel(channel, false); - }); -}); client.addListener('motd', function(motd) { var statusTab = $("[data-tab=status].chat"); @@ -267,21 +220,6 @@ client.addListener('quit', function(nick, reason, channels, message) { }); -client.addListener('pm', function(nick, text, message) { - - if($(".ui.tab[data-tab=pm-"+nick+"]").length == 0) { - $(".ui.menu").append(""+nick+""); - $("#chan-container").append("
"); - var chanTab = $("[data-tab=pm-"+ nick +"].tab"); - chanTab.append("
"); - numChans++; - $('.menu .item').tab({history:false}); - } - var chatTab = $("[data-tab=pm-"+ nick +"].chat"); - chatTab.append("

<"+nick+"> "+text+"

") - chatTab.scrollTop(chatTab.prop("scrollHeight")); -}); - client.addListener('kick', function(channel, nick, by, reason, message) { if (myNick == nick) { removeChannel(channel, false); @@ -308,34 +246,6 @@ client.addListener('kill', function(nick, reason, channels, message) { }); }); -client.addListener('topic', function(channel, topic, nick, message) { - channel = channel.replace("#",""); - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - if($(".ui.tab[data-tab=chan-"+channel+"]").length == 0) { - joinChannel(channel, false) - } - chatTab.append("

Topic for #"+channel+" is "+topic+" - set by "+nick+" at "+message.args[3]+"

") - var topicTab = $("[data-tab=chan-"+ channel +"].topic"); - topicTab.html("

"+topic+"

") -}); - -client.addListener('whois', function(info) { - console.log(info) - var chatTab = $(".active .chat"); - chatTab.append("

Nick:"+info.nick+"

"); - chatTab.append("

User:"+info.user+"

"); - chatTab.append("

Host:"+info.host+"

"); - chatTab.append("

Real Name:"+info.realname+"

"); - chatTab.append("

Channels:"); - for (channel in info.channels) { - chatTab.append(" "+info.channels[channel]) - } - chatTab.append("

") - chatTab.append("

Server:"+info.server+"

"); - chatTab.append("

Server Info:"+info.serverinfo+"

"); - chatTab.append("

"+info.operator+"

"); - chatTab.scrollTop(chatTab.prop("scrollHeight")); -}); client.addListener('+mode', function(channel, by, mode, argument, message) { console.log(message) -- cgit v1.2.3 From f13842bc63f002e456727d1a48239d4e044d0c75 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 16 Oct 2016 21:05:57 +0100 Subject: Add join, part, and quit handlers --- commands.js | 2 +- handlers.js | 41 +++++++++++++++++++++++++++++++++++++++++ index.js | 54 ++++-------------------------------------------------- 3 files changed, 46 insertions(+), 51 deletions(-) (limited to 'commands.js') diff --git a/commands.js b/commands.js index 5ab1d5e..59be364 100644 --- a/commands.js +++ b/commands.js @@ -62,7 +62,7 @@ module.exports.joinChannel = function (channel, sendJoin) { chanTab.append("
"); $('.menu .item').tab({history:false}); - + globals.channels.push(channel) numChans++; } diff --git a/handlers.js b/handlers.js index c4adbd7..e68a14d 100644 --- a/handlers.js +++ b/handlers.js @@ -95,6 +95,47 @@ module.exports.handleCommands = function(myClient) { }) }) + + client.on('join', function(event) { + var channel = event.channel + var nick = event.nick + if($(".ui.users[data-tab='"+channel+"'] [data-nick="+nick+"]").length == 0) { + $(".ui.users[data-tab='"+channel+"']").append("
"+nick+"
") + } + var chatTab = $("[data-tab='"+ channel +"'].chat"); + chatTab.append("

"+nick+" joined "+channel+"

") + }); + + client.on('part', function(event) { + var channel = event.channel + var nick = event.nick + var message = event.message + + if($(".ui.users[data-tab='"+channel+"'] [data-nick="+nick+"]").length > 0) { + $(".ui.users[data-tab='"+channel+"'] [data-nick="+nick+"]").remove(); + } + var chatTab = $("[data-tab='"+ channel +"'].chat"); + + chatTab.append("

"+nick+" left "+channel+" ("+message+")

") + chatTab.scrollTop(chatTab.prop("scrollHeight")); + }); + + client.on('quit', function(event) { + var nick = event.nick + var message = event.message + + + globals.channels.forEach(function(channel) { + if($(".ui.users[data-tab='"+channel+"'] [data-nick="+nick+"]").length > 0) { + $(".ui.users[data-tab='"+channel+"'] [data-nick="+nick+"]").remove(); + var chatTab = $("[data-tab='"+ channel +"'].chat"); + chatTab.append("

"+nick+" quit ("+message+")

") + chatTab.scrollTop(chatTab.prop("scrollHeight")); + } + + }); + }) + } function receiveMsg(target, from, message) { diff --git a/index.js b/index.js index e9a6f7c..b4333e5 100644 --- a/index.js +++ b/index.js @@ -131,9 +131,9 @@ $("#send-message").keypress(function(e) { topic = message.substring(7, message.length); commands.setTopic(channel, topic); } else if (message.indexOf("/") == 0) { - command = message.split(" ")[0].replace("/",""); - commandArgs = message.replace(command + " ", ""); - client.send("kick", ["#wtest", "wjoe__", "test"]); + // command = message.split(" ")[0].replace("/",""); + // commandArgs = message.replace(command + " ", ""); + // client.send("kick", ["#wtest", "wjoe__", "test"]); } else { var tab = $(".tab.active").attr("data-tab"); if (tab.startsWith("#")) { @@ -163,7 +163,7 @@ client.addListener('motd', function(motd) { client.addListener('raw', function(message) { var statusTab = $("[data-tab=status].chat"); - statusCmds = ["NOTICEAUTH", "rpl_welcome, rpl_yourhoust", "rpl_created", "rpl_myinfo", "rpl_isupport", "rpl_luserclient", "rpl_luserop", "rpl_luserme", "rpl_luserchannels", "rpl_localusers", "rpl_globalusers"]; + statusCmds = ["NOTICEAUTH", "rpl_welcome, rpl_yourhost", "rpl_created", "rpl_myinfo", "rpl_isupport", "rpl_luserclient", "rpl_luserop", "rpl_luserme", "rpl_luserchannels", "rpl_localusers", "rpl_globalusers"]; if (statusCmds.indexOf(message.command) > -1 || message.command.startsWith("rpl_")) { statusTab.append("

"+message.command + ": " +message.args+"

") statusTab.scrollTop(statusTab.prop("scrollHeight")); @@ -174,39 +174,6 @@ client.addListener('ctcp-version', function(from, to, text, message) { client.ctcp(from, "VERSION", "VERSION "+progName + " v"+ version) }); - -client.addListener('names', function(channel, nicks) { - channel = channel.replace("#","") - if($(".ui.tab[data-tab=chan-"+channel+"]").length == 0) { - joinChannel(channel, false) - } - for(nick in nicks) { - var mode = nicks[nick]; - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length == 0) { - $(".ui.users[data-tab=chan-"+channel+"]").append("
"+mode+nick+"
") - } - } -}); -- -client.addListener('join', function(channel, nick) { - channel = channel.replace("#","") - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length == 0) { - $(".ui.users[data-tab=chan-"+channel+"]").append("
"+nick+"
") - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+nick+" joined #"+channel+"

") -}); - -client.addListener('part', function(channel, nick) { - channel = channel.replace("#","") - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length > 0) { - $(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").remove(); - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+nick+" left #"+channel+"

") - chatTab.scrollTop(chatTab.prop("scrollHeight")); -}); - client.addListener('quit', function(nick, reason, channels, message) { channels.forEach(function(channel) { channel = channel.replace("#","") @@ -296,17 +263,4 @@ client.addListener('-mode', function(channel, by, mode, argument, message) { chatTab.scrollTop(chatTab.prop("scrollHeight")); }); -client.addListener('channellist', function(channelList) { - var statusTab = $("[data-tab=status].chat"); - statusTab.append("

Channel List:

") - for (i in channelList) { - if (channelList[i].topic == null) { - statusTab.append("

"+channelList[i].name+" ("+channelList[i].users+")

"); - } else { - statusTab.append("

"+channelList[i].name+" ("+channelList[i].users+") : "+channelList[i].topic+"

"); - } - statusTab.scrollTop(statusTab.prop("scrollHeight")); - } -}); - } -- cgit v1.2.3 From e0840642f1710a5f50d3508d3fe661fdc17d9d56 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 16 Oct 2016 21:41:00 +0100 Subject: Add kick handler --- commands.js | 3 ++- globals.js | 2 ++ handlers.js | 17 ++++++++++++++++ index.js | 68 +------------------------------------------------------------ 4 files changed, 22 insertions(+), 68 deletions(-) (limited to 'commands.js') diff --git a/commands.js b/commands.js index 59be364..138c55f 100644 --- a/commands.js +++ b/commands.js @@ -67,10 +67,11 @@ module.exports.joinChannel = function (channel, sendJoin) { } module.exports.removeChannel = function(channel, sendPart) { - var channelObj = client.channel(channel) + chanId = $("[data-tab='"+channel+"'].chat").attr("data-id"); $("[data-tab='"+channel+"']").remove(); if (sendPart) { + var channelObj = client.channel(channel) channelObj.part(); } while ($("[data-id="+(chanId-1)+"]").length == 0 && chanId >=0) { diff --git a/globals.js b/globals.js index a0c689b..d96f702 100644 --- a/globals.js +++ b/globals.js @@ -3,3 +3,5 @@ module.exports.channels = ['status'] module.exports.pms = [] module.exports.networks = [] + +module.exports.myNick = "" diff --git a/handlers.js b/handlers.js index c6d86de..24b783c 100644 --- a/handlers.js +++ b/handlers.js @@ -173,6 +173,23 @@ module.exports.handleCommands = function(myClient) { chatTab.scrollTop(chatTab.prop("scrollHeight")); }) + client.on('kick', function(event) { + var kicked = event.kicked + var by = event.nick + var channel = event.channel + var reason = event.message + if (globals.myNick == kicked) { + commands.removeChannel(channel, false); + } else { + if($(".ui.users[data-tab='"+channel+"'] [data-nick="+kicked+"]").length > 0) { + $(".ui.users[data-tab='"+channel+"'] [data-nick="+kicked+"]").remove(); + } + var chatTab = $("[data-tab='"+ channel +"'].chat"); + chatTab.append("

"+kicked+" was kicked from "+channel+" by "+by+" ("+reason+")

") + chatTab.scrollTop(chatTab.prop("scrollHeight")); + } + }) + } function receiveMsg(target, from, message) { diff --git a/index.js b/index.js index b4333e5..48f55a0 100644 --- a/index.js +++ b/index.js @@ -62,6 +62,7 @@ console.log($("#channel-input").val()); version: "blachat 0.1.3" }); + globals.myNick = myNick commands.init(client) handlers.setChannels(channels) handlers.handleCommands(client) @@ -170,23 +171,6 @@ client.addListener('raw', function(message) { } }); -client.addListener('ctcp-version', function(from, to, text, message) { - client.ctcp(from, "VERSION", "VERSION "+progName + " v"+ version) -}); - -client.addListener('quit', function(nick, reason, channels, message) { - channels.forEach(function(channel) { - channel = channel.replace("#","") - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length > 0) { - $(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").remove(); - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+nick+" quit ("+reason+")

") - chatTab.scrollTop(chatTab.prop("scrollHeight")); - }); - -}); - client.addListener('kick', function(channel, nick, by, reason, message) { if (myNick == nick) { removeChannel(channel, false); @@ -213,54 +197,4 @@ client.addListener('kill', function(nick, reason, channels, message) { }); }); - -client.addListener('+mode', function(channel, by, mode, argument, message) { - console.log(message) - channel = channel.replace("#","") - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - var modeLine = mode; - if (mode == "o") { - modeLine = " gives channel operator status to " + argument; - } else if (mode == "v") { - modeLine = " gives voice to " + argument; - } else if (mode == "h") { - modeLine = " gives channel half-operator status to " + argument; - } else if (mode == "q") { - modeLine = " gives channel owner status to " + argument; - } else if (argument == myNick) { - modeLine = " sets mode +" + mode + " on " + argument; - } else if (argument != null) { - modeLine = " sets mode " + mode + " " + argument + " on #" +channel; - } else { - modeLine = " sets mode +"+mode+" on #" +channel - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+by+modeLine+"

"); - chatTab.scrollTop(chatTab.prop("scrollHeight")); -}); - -client.addListener('-mode', function(channel, by, mode, argument, message) { - channel = channel.replace("#","") - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - var modeLine = mode; - if (mode == "o") { - modeLine = " removes channel operator status from "; - } else if (mode == "v") { - modeLine = " removes voice from "; - } else if (mode == "h") { - modeLine = " removes channel half-operator status from "; - } else if (mode == "q") { - modeLine = " removes channel owner status from "; - } else if (argument == myNick) { - modeLine = " sets mode -"+mode+" on " + argument; - } else if (argument != null) { - modeLine = " sets mode -" + mode + " " + argument + " on #" +channel; - } else { - modeLine = " sets mode -"+mode+" on #" +channel - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+by+modeLine+"

"); - chatTab.scrollTop(chatTab.prop("scrollHeight")); -}); - } -- cgit v1.2.3 From ac48b1195c4cd68f716e4119181c720cc9ec8b4f Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 16 Oct 2016 22:34:58 +0100 Subject: Handle error and server messages --- commands.js | 8 ++--- handlers.js | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- index.js | 60 ++++++-------------------------- 3 files changed, 121 insertions(+), 59 deletions(-) (limited to 'commands.js') diff --git a/commands.js b/commands.js index 138c55f..1847b74 100644 --- a/commands.js +++ b/commands.js @@ -5,14 +5,14 @@ module.exports.init = function(myClient) { client = myClient } -function sendMsg(message, channel) { +module.exports.sendMsg = function(message, channel) { client.say(channel, message); var chanTab = $("[data-tab='"+ channel +"'].chat"); - chanTab.append("

<" + myNick + "> " + message +"

"); + chanTab.append("

<" + globals.myNick + "> " + message +"

"); chanTab.scrollTop(chanTab.prop("scrollHeight")); } -function sendPm(message, nick) { +module.exports.sendPm = function(message, nick) { var chanTab = $("[data-tab="+nick+"].tab"); $(".active").removeClass("active"); @@ -31,7 +31,7 @@ function sendPm(message, nick) { var chatTab = $("[data-tab="+nick+"].chat"); console.log(nick + ': ' + message); client.say(nick, message); - chatTab.append("

<" + myNick + "> " + message +"

"); + chatTab.append("

<" + globals.myNick + "> " + message +"

"); chatTab.scrollTop(chanTab.prop("scrollHeight")); } diff --git a/handlers.js b/handlers.js index 24b783c..9142f04 100644 --- a/handlers.js +++ b/handlers.js @@ -18,7 +18,7 @@ module.exports.handleCommands = function(myClient) { }); }); client.on('message', function(event) { - receiveMsg(event.target, event.nick, event.message) + receiveMsg(event.target, event.nick, event.message, event.from_server) }) client.on('userlist', function(event) { @@ -48,17 +48,31 @@ module.exports.handleCommands = function(myClient) { channel = event.channel topic = event.topic //TODO: Handle topicsetby to add the user and time for the topic - nick = "vov" - time = "vov" var chatTab = $("[data-tab='"+ channel +"'].chat"); if($(".ui.tab[data-tab='"+channel+"']").length == 0) { commands.joinChannel(channel, false) } - chatTab.append("

Topic for "+channel+" is "+topic+" - set by "+nick+" at "+time+"

") + chatTab.append("

Topic for "+channel+" is "+topic+"

") var topicTab = $("[data-tab='"+ channel +"'].topic"); topicTab.html("

"+topic+"

") }) + client.on('topicsetby', function(event) { + channel = event.channel + nick = event.nick + timestamp = event.when + + //TODO: Handle topicsetby to add the user and time for the topic + + var chatTab = $("[data-tab='"+ channel +"'].chat"); + if($(".ui.tab[data-tab='"+channel+"']").length == 0) { + commands.joinChannel(channel, false) + } + chatTab.append("

Set by "+nick+" at "+timestamp+"

") + var topicLine = $("[data-tab='"+ channel +"'].topic .topic-line"); + topicLine.append(" by " + nick + " at " + timestamp) + }) + client.on('whois', function(event) { var nick = event.nick var chatTab = $(".active .chat"); @@ -160,7 +174,7 @@ module.exports.handleCommands = function(myClient) { modeLine = " removes channel half-operator status from " + argument; } else if (mode == "-q") { modeLine = " removes channel owner status from " + argument; - } else if (argument == myNick) { + } else if (argument == globals.myNick) { modeLine = " sets mode " + mode + " on " + argument; } else if (argument != null) { modeLine = " sets mode " + mode + " " + argument + " on " +channel; @@ -190,9 +204,90 @@ module.exports.handleCommands = function(myClient) { } }) + client.on('motd', function(event) { + serverMsg(event.motd) + }) + + //Server Info + //eg: Your host is irc.lc8n.com, running version Unreal3.2.10.4" + //param 0 is your nick + client.on('002', function(event) { + serverMsg(event.params[1]) + }) + + //Server created + //eg Your host is irc.lc8n.com, running version Unreal3.2.10.4" + //param 0 is your nick + client.on('003', function(event) { + serverMsg(event.params[1]) + }) + + //004: Some unknown server strings + client.on('004', function(event) { + serverMsg(event.params[1] + " " + event.params[2] + " " + event.params[3] + " " + event.params[4]) + }) + //Users online + //eg: There are 7 users and 47 invisible on 4 servers + client.on('251', function(event) { + serverMsg(event.params[1]) + }) + + //Operators online + //eg: "10" "operator(s) online" + client.on('252', function(event) { + serverMsg(event.params[1] + " " +event.params[2]) + }) + + //Channels formed + //eg "49" "channels formed" + client.on('254', function(event) { + serverMsg(event.params[1] + " " +event.params[2]) + }) + + //'Clients' and 'Servers'? + //eg "I have 8 clients and 1 servers" + client.on('255', function(event) { + serverMsg(event.params[1]) + }) + + //User stats + //eg ""Current global users 54, max 63" + //param 0 is your nick, 1 is current users, 2 is max users + client.on('266', function(event) { + serverMsg(event.params[3]) + }) + + client.on('irc error', function(event) { + errorMsg(event.error, event.reason, event.channel) + }); + + //No such channel error + client.on('403', function(event) { + errorMsg("403", event.params[2], event.params[1]) + }); } -function receiveMsg(target, from, message) { + +function errorMsg(error, message, param) { + var chatTab = $(".active .chat"); + + chatTab.append("

Error: "+error+"!

"); + if (param.length > 0) { + chatTab.append("

Param: "+param+"

"); + } + if (message.length > 0) { + chatTab.append("

Message: "+message+"

"); + } + chatTab.scrollTop(chatTab.prop("scrollHeight")); + console.log('error: ', error); +} +function serverMsg(message) { + var statusTab = $("[data-tab=status].chat"); + statusTab.append("

"+message+"

") + statusTab.scrollTop(statusTab.prop("scrollHeight")); +} + +function receiveMsg(target, from, message, from_server) { // message = message.autoLink( { // callback: function(url) { // return /\.(gif|png|jpe?g)$/i.test(url) ? '' : null; @@ -200,6 +295,11 @@ function receiveMsg(target, from, message) { // target: "_blank" // }); // console.log(message.autoLink()); + + if (from_server) { + serverMsg(message) + return false + } numChans = globals.channels.length console.log(from + ' => '+ target +': ' + message); diff --git a/index.js b/index.js index 48f55a0..1975bc0 100644 --- a/index.js +++ b/index.js @@ -148,53 +148,15 @@ $("#send-message").keypress(function(e) { } }); -function createListeners(client) { - -client.addListener('error', function(message) { - console.log('error: ', message); -}); - - -client.addListener('motd', function(motd) { - var statusTab = $("[data-tab=status].chat"); - statusTab.append("

"+motd+"

") - statusTab.scrollTop(statusTab.prop("scrollHeight")); -}); - -client.addListener('raw', function(message) { - var statusTab = $("[data-tab=status].chat"); - statusCmds = ["NOTICEAUTH", "rpl_welcome, rpl_yourhost", "rpl_created", "rpl_myinfo", "rpl_isupport", "rpl_luserclient", "rpl_luserop", "rpl_luserme", "rpl_luserchannels", "rpl_localusers", "rpl_globalusers"]; - if (statusCmds.indexOf(message.command) > -1 || message.command.startsWith("rpl_")) { - statusTab.append("

"+message.command + ": " +message.args+"

") - statusTab.scrollTop(statusTab.prop("scrollHeight")); - } -}); - -client.addListener('kick', function(channel, nick, by, reason, message) { - if (myNick == nick) { - removeChannel(channel, false); - } else { - channel = channel.replace("#",""); - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length > 0) { - $(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").remove(); - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+nick+"was kicked from #"+channel+" by "+by+" ("+reason+")

") - chatTab.scrollTop(chatTab.prop("scrollHeight")); - } -}); - -client.addListener('kill', function(nick, reason, channels, message) { - channels.forEach(function(channel) { - channel = channel.replace("#","") - if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length > 0) { - $(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").remove(); - } - var chatTab = $("[data-tab=chan-"+ channel +"].chat"); - chatTab.append("

"+nick+" was killed by the server ("+reason+")

") - chatTab.scrollTop(chatTab.prop("scrollHeight")); - }); -}); - -} +// client.addListener('kill', function(nick, reason, channels, message) { +// channels.forEach(function(channel) { +// channel = channel.replace("#","") +// if($(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").length > 0) { +// $(".ui.users[data-tab=chan-"+channel+"] [data-nick="+nick+"]").remove(); +// } +// var chatTab = $("[data-tab=chan-"+ channel +"].chat"); +// chatTab.append("

"+nick+" was killed by the server ("+reason+")

") +// chatTab.scrollTop(chatTab.prop("scrollHeight")); +// }); +// }); -- cgit v1.2.3