Merge pull request #154 from xPaw/better-commands
Handle commands in a better way
This commit is contained in:
commit
ddc72ea94f
@ -33,21 +33,21 @@ var events = [
|
|||||||
"whois"
|
"whois"
|
||||||
];
|
];
|
||||||
var inputs = [
|
var inputs = [
|
||||||
|
// These inputs are sorted in order that is most likely to be used
|
||||||
|
"msg",
|
||||||
|
"whois",
|
||||||
|
"part",
|
||||||
"action",
|
"action",
|
||||||
"connect",
|
"connect",
|
||||||
"invite",
|
"invite",
|
||||||
"join",
|
"join",
|
||||||
"kick",
|
"kick",
|
||||||
"mode",
|
"mode",
|
||||||
"msg",
|
|
||||||
"nick",
|
"nick",
|
||||||
"notice",
|
"notice",
|
||||||
"part",
|
|
||||||
"quit",
|
"quit",
|
||||||
"raw",
|
"raw",
|
||||||
"services",
|
|
||||||
"topic",
|
"topic",
|
||||||
"whois"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
function Client(manager, name, config) {
|
function Client(manager, name, config) {
|
||||||
@ -270,16 +270,22 @@ Client.prototype.input = function(data) {
|
|||||||
var client = this;
|
var client = this;
|
||||||
var text = data.text.trim();
|
var text = data.text.trim();
|
||||||
var target = client.find(data.target);
|
var target = client.find(data.target);
|
||||||
if (text.charAt(0) !== "/") {
|
|
||||||
text = "/say " + text;
|
// This is either a normal message or a command escaped with a leading '/'
|
||||||
|
if (text.charAt(0) !== "/" || text.charAt(1) === "/") {
|
||||||
|
text = "say " + text.replace(/^\//, "");
|
||||||
|
} else {
|
||||||
|
text = text.substr(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var args = text.split(" ");
|
var args = text.split(" ");
|
||||||
var cmd = args.shift().replace("/", "").toLowerCase();
|
var cmd = args.shift().toLowerCase();
|
||||||
_.each(inputs, function(plugin) {
|
|
||||||
|
var result = inputs.some(function(plugin) {
|
||||||
try {
|
try {
|
||||||
var path = "./plugins/inputs/" + plugin;
|
var path = "./plugins/inputs/" + plugin;
|
||||||
var fn = require(path);
|
var fn = require(path);
|
||||||
fn.apply(client, [
|
return fn.apply(client, [
|
||||||
target.network,
|
target.network,
|
||||||
target.chan,
|
target.chan,
|
||||||
cmd,
|
cmd,
|
||||||
@ -289,6 +295,10 @@ Client.prototype.input = function(data) {
|
|||||||
console.log(path + ": " + e);
|
console.log(path + ": " + e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (result !== true) {
|
||||||
|
target.network.irc.write(text);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Client.prototype.more = function(data) {
|
Client.prototype.more = function(data) {
|
||||||
|
@ -26,4 +26,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,10 +2,13 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "connect" && cmd !== "server") {
|
if (cmd !== "connect" && cmd !== "server") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var client = this;
|
var client = this;
|
||||||
client.connect({
|
client.connect({
|
||||||
host: args[0]
|
host: args[0]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -10,4 +10,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
} else if (args.length === 1 && chan.type === "channel") {
|
} else if (args.length === 1 && chan.type === "channel") {
|
||||||
irc.invite(args[0], chan.name); // Current channel
|
irc.invite(args[0], chan.name); // Current channel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "join") {
|
if (cmd !== "join") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.join(args[0], args[1]);
|
irc.join(args[0], args[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "kick") {
|
if (cmd !== "kick") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.kick(chan.name, args[0]);
|
irc.kick(chan.name, args[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -16,7 +16,7 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
"devoice": "-v"
|
"devoice": "-v"
|
||||||
}[cmd];
|
}[cmd];
|
||||||
} else if (args.length === 1) {
|
} else if (args.length === 1) {
|
||||||
return;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
mode = args[0];
|
mode = args[0];
|
||||||
user = args[1];
|
user = args[1];
|
||||||
@ -27,4 +27,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
mode,
|
mode,
|
||||||
user
|
user
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -5,14 +5,14 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (args.length === 0 || args[0] === "") {
|
if (args.length === 0 || args[0] === "") {
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
var target = "";
|
var target = "";
|
||||||
if (cmd === "msg") {
|
if (cmd === "msg") {
|
||||||
target = args.shift();
|
target = args.shift();
|
||||||
if (args.length === 0) {
|
if (args.length === 0) {
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
target = chan.name;
|
target = chan.name;
|
||||||
@ -27,4 +27,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
message: msg
|
message: msg
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "nick") {
|
if (cmd !== "nick") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.nick(args[0]);
|
irc.nick(args[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -27,4 +27,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
chan: targetChan.id,
|
chan: targetChan.id,
|
||||||
msg: msg
|
msg: msg
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,7 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "part" && cmd !== "leave" && cmd !== "close") {
|
if (cmd !== "part" && cmd !== "leave" && cmd !== "close") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chan.type !== "query") {
|
if (chan.type !== "query") {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
if (args.length === 0) {
|
if (args.length === 0) {
|
||||||
@ -11,8 +12,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
}
|
}
|
||||||
irc.part(args);
|
irc.part(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
network.channels = _.without(network.channels, chan);
|
network.channels = _.without(network.channels, chan);
|
||||||
this.emit("part", {
|
this.emit("part", {
|
||||||
chan: chan.id
|
chan: chan.id
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -16,4 +16,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
irc.quit(quitMessage);
|
irc.quit(quitMessage);
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "raw" && cmd !== "send" && cmd !== "quote") {
|
if (cmd !== "raw" && cmd !== "send" && cmd !== "quote") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.write(args.join(" "));
|
irc.write(args.join(" "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
var _ = require("lodash");
|
|
||||||
|
|
||||||
module.exports = function(network, chan, cmd, args) {
|
|
||||||
if (cmd !== "ns" && cmd !== "cs" && cmd !== "hs") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var target = ({
|
|
||||||
"ns": "nickserv",
|
|
||||||
"cs": "chanserv",
|
|
||||||
"hs": "hostserv",
|
|
||||||
})[cmd];
|
|
||||||
if (!target || args.length === 0 || args[0] === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var irc = network.irc;
|
|
||||||
var msg = args.join(" ");
|
|
||||||
irc.send(target, msg);
|
|
||||||
var channel = _.find(network.channels, {name: target});
|
|
||||||
if (typeof channel !== "undefined") {
|
|
||||||
irc.emit("message", {
|
|
||||||
from: irc.me,
|
|
||||||
to: channel.name,
|
|
||||||
message: msg
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
@ -9,4 +9,6 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
|
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.write(msg);
|
irc.write(msg);
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,11 @@ module.exports = function(network, chan, cmd, args) {
|
|||||||
if (cmd !== "whois" && cmd !== "query") {
|
if (cmd !== "whois" && cmd !== "query") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length !== 0) {
|
if (args.length !== 0) {
|
||||||
var irc = network.irc;
|
var irc = network.irc;
|
||||||
irc.whois(args[0]);
|
irc.whois(args[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user