|
| 1 | +var api; |
| 2 | +var storage; |
| 3 | + |
| 4 | +function addRequestToQEvent(channelID, request) { |
| 5 | + var requests = storage.getItem(channelID + "_requests") || []; |
| 6 | + requests.push(request); |
| 7 | + storage.setItem(channelID + "_requests", requests); |
| 8 | + api.Messages.send(channelID, "Added request '" + request + "'"); |
| 9 | +} |
| 10 | +function handleCmd(data) { |
| 11 | + var args = data.args; |
| 12 | + if (!args[0] || args[0].toLowerCase() === "list") { |
| 13 | + var requests = storage.getItem(data.channelID + "_requests") || []; |
| 14 | + var msg = "There currently " + (requests.length !== 1 ? "are" : "is") + " " + (!requests.length ? "no" : requests.length) + " request" + (requests.length !== 1 ? "s" : "") + " in the queue" + (requests.length ? ":" : "."); |
| 15 | + requests.forEach(function (item, index) { |
| 16 | + msg = msg + "\n" + (index + 1) + " - " + item; |
| 17 | + }); |
| 18 | + api.Messages.send(data.channelID, msg); |
| 19 | + } else if (args[0] === "?" || args[0].toLowerCase() === "help") { |
| 20 | + api.Messages.send(data.channelID, "Add, delete or list requests! You can also raffle a random request!"); |
| 21 | + } else if (args[0].toLowerCase() === "raffle") { |
| 22 | + var requests = storage.getItem(data.channelID + "_requests") || []; |
| 23 | + if (!requests.length) { |
| 24 | + api.Messages.send(data.channelID, "No requests to raffle"); |
| 25 | + return; |
| 26 | + } |
| 27 | + api.Messages.send(data.channelID, "Do this request: " + requests[Math.floor(Math.random() * requests.length)]); |
| 28 | + } else if (args[0].toLowerCase() === "delete" || args[0].toLowerCase() === "del" || args[0].toLowerCase() === "rm") { |
| 29 | + var index = parseInt(args[1]) - 1; |
| 30 | + if (isNaN(index)) { |
| 31 | + api.Messages.send(data.channelID, "No index to remove specified."); |
| 32 | + return; |
| 33 | + } |
| 34 | + var requests = storage.getItem(data.channelID + "_requests") || []; |
| 35 | + var removed = requests.splice(index, 1)[0]; |
| 36 | + storage.setItem(data.channelID + "_requests", requests); |
| 37 | + removed ? api.Messages.send(data.channelID, "Removed request '" + removed + "'") : api.Messages.send(data.channelID, "Request with index " + (index + 1) + " not found."); |
| 38 | + } else if (parseInt(args[0])) { |
| 39 | + var index = parseInt(args[0]) - 1; |
| 40 | + var requests = storage.getItem(data.channelID + "_requests") || []; |
| 41 | + requests[index] ? api.Messages.send(data.channelID, (index + 1) + " - " + requests[index]) : api.Messages.send(data.channelID, "Request with index " + (index + 1) + " not found."); |
| 42 | + } else { |
| 43 | + if (args[0].toLowerCase() === "add") args.splice(0, 1); |
| 44 | + var requests = storage.getItem(data.channelID + "_requests") || []; |
| 45 | + requests.push(args.join(" ")); |
| 46 | + storage.setItem(data.channelID + "_requests", requests); |
| 47 | + api.Messages.send(data.channelID, "Added request '" + args.join(" ") + "'"); |
| 48 | + } |
| 49 | +} |
| 50 | +module.exports = { |
| 51 | + meta_inf: { |
| 52 | + name: "Request Queue", |
| 53 | + version: "1.0.0", |
| 54 | + description: "Store requests for later.", |
| 55 | + author: "Wolvan" |
| 56 | + }, |
| 57 | + load: function (_api, _storage) { |
| 58 | + api = _api; |
| 59 | + storage = _storage; |
| 60 | + api.Events.on("requestq_addRequestToQ", addRequestToQEvent); |
| 61 | + }, |
| 62 | + start: function () { |
| 63 | + api.Events.on("chatCmd#request", handleCmd); |
| 64 | + api.Events.on("chatCmd#requests", handleCmd); |
| 65 | + }, |
| 66 | + stop: function () { |
| 67 | + api.Events.removeListener("chatCmd#request", handleCmd); |
| 68 | + api.Events.removeListener("chatCmd#requests", handleCmd); |
| 69 | + }, |
| 70 | + unload: function () { |
| 71 | + api.Events.removeListener("requestq_addRequestToQ", addRequestToQEvent); |
| 72 | + } |
| 73 | +} |
0 commit comments