Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CHAT.JS
- añades este const
- const parseEmoticons = require('./server-plugins/emoticons').parseEmoticons;
- Buscas output the message y sustituyes esto
- // Output the message
- if (message && message !== true && typeof message.then !== 'function') {
- if (this.pmTarget) {
- const parsedMsg = parseEmoticons(message, this.room, this.user, true);
- if (parsedMsg) message = '/html ' + parsedMsg;
- let buf = `|pm|${this.user.getIdentity()}|${this.pmTarget.getIdentity()}|${message}`;
- this.user.send(buf);
- if (this.pmTarget !== this.user) this.pmTarget.send(buf);
- this.pmTarget.lastPM = this.user.userid;
- this.user.lastPM = this.pmTarget.userid;
- } else {
- if (Users.ShadowBan.checkBanned(this.user)) {
- if (parseEmoticons(message, this.room, this.user)) return;
- Users.ShadowBan.addMessage(this.user, `To ${this.room.id}`, message);
- this.user.sendTo(this.room.id, `|c|${this.user.getIdentity(this.room.id)}|${message}`);
- } else {
- if (Users.ShadowBan.checkBanned(this.user)) {
- Users.ShadowBan.addMessage(this.user, "To " + this.room.id, message);
- this.user.sendTo(this.room, (this.room.type === 'chat' ? '|c:|' + (~~(Date.now() / 1000)) + '|' : '|c|') + this.user.getIdentity(this.room.id) + '|' + message);
- } else {
- if (parseEmoticons(message, this.room, this.user)) return;
- this.room.add(`|c|${this.user.getIdentity(this.room.id)}|${message}`).update();
- }
- }
- }
- }
- this.update();
- return message;
- }
- EMOTICONS.JS
- 'use strict';
- let demFeels = function () {};
- demFeels.getEmotes = function () {
- return {};
- };
- try {
- demFeels = require('dem-feels');
- } catch (e) {
- console.error(e);
- }
- exports.parseEmoticons = parseEmoticons;
- // for travis build
- if (typeof demFeels.extendEmotes === 'function') {
- // example extending emotes
- demFeels.extendEmotes({
- ':alemania:': 'https://images.emojiterra.com/twitter/v11/svg/1f1e9-1f1ea.svg',
- ':arabiasaudi:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f8-1f1e6.svg',
- ':argentina:': 'https://images.emojiterra.com/twitter/128px/1f1e6-1f1f7.png',
- ':australia:': 'https://images.emojiterra.com/twitter/512px/1f1e6-1f1fa.png',
- ':belgica:': 'https://images.emojiterra.com/twitter/v11/svg/1f1e7-1f1ea.svg',
- ':brasil:': 'https://images.emojiterra.com/twitter/128px/1f1e7-1f1f7.png',
- ':colombia:': 'https://images.emojiterra.com/twitter/128px/1f1e8-1f1f4.png',
- ':costarica:': 'https://images.emojiterra.com/twitter/128px/1f1e8-1f1f7.png',
- ':croacia:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ed-1f1f7.svg',
- ':dinamarca:': 'https://images.emojiterra.com/twitter/v11/svg/1f1e9-1f1f0.svg',
- ':egipto:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ea-1f1ec.svg',
- ':españa:': 'https://images.emojiterra.com/twitter/512px/1f1ea-1f1f8.png',
- ':francia:': 'https://images.emojiterra.com/twitter/512px/1f1eb-1f1f7.png',
- ':inglaterra:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ec-1f1e7.svg',
- ':iran:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ee-1f1f7.svg',
- ':islandia:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ee-1f1f8.svg',
- ':japon:': 'https://images.emojiterra.com/twitter/v11/svg/1f1ef-1f1f5.svg',
- ':marruecos:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f2-1f1e6.svg',
- ':mexico:': 'https://images.emojiterra.com/twitter/128px/1f1f2-1f1fd.png',
- ':nigeria:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f3-1f1ec.svg',
- ':panama:': 'https://images.emojiterra.com/twitter/128px/1f1f5-1f1e6.png',
- ':peru:': 'https://images.emojiterra.com/twitter/128px/1f1f5-1f1ea.png',
- ':polonia:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f5-1f1f1.svg',
- ':portugal:': 'https://images.emojiterra.com/twitter/512px/1f1f5-1f1f9.png',
- ':republicacorea:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f0-1f1f7.svg',
- ':rusia:': 'https://images.emojiterra.com/twitter/512px/1f1f7-1f1fa.png',
- ':senegal:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f8-1f1f3.svg',
- ':serbia:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f7-1f1f8.svg',
- ':suecia:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f8-1f1ea.svg',
- ':suiza:': 'https://images.emojiterra.com/twitter/v11/svg/1f1e8-1f1ed.svg',
- ':tunez:': 'https://images.emojiterra.com/twitter/v11/svg/1f1f9-1f1f3.svg',
- ':uruguay:': 'https://images.emojiterra.com/twitter/128px/1f1fa-1f1fe.png',
- ':feelsllama:': 'http://i.imgur.com/oSLSk2I.gif',
- ':llamacool:': 'http://i.imgur.com/X1x3728.gif',
- ':llamanoodle:': 'http://i.imgur.com/SUZkz5p.gif',
- ':llamarawr:': 'http://i.imgur.com/KWAQbPu.gif',
- ':llamatea:': 'http://i.imgur.com/nJnakEU.gif',
- ':llamayawn:': 'http://i.imgur.com/SVj8kBt.gif',
- ':llamamad:': 'http://i.imgur.com/eT7kdww.gif',
- ':llamanv:': 'http://i.imgur.com/9PgUk4M.gif',
- ':llamacute:': 'http://i.imgur.com/5hi0kjz.gif',
- ':llamacry:': 'http://i.imgur.com/ID6i8rl.gif',
- ':llamapretty:': 'http://i.imgur.com/mBPcOQW.gif',
- ':llamabouncy:': 'http://i.imgur.com/PiMDmNd.gif',
- ':llamahi:': 'http://i.imgur.com/2BeipQ8.gif',
- ':llamasneaky:': 'http://i.imgur.com/8XT3CyT.gif',
- ':llamadance:': 'http://i.imgur.com/Tl8xmiq.gif',
- ':llamawink:': 'http://i.imgur.com/Xtjjjlm.gif',
- ':llamashades:': 'http://i.imgur.com/jBlIicx.gif',
- ':llama:3:': 'http://i.imgur.com/dkV8FSY.gif',
- ':llamashy:': 'http://i.imgur.com/Bj7jSrc.gif',
- ':llamafun:': 'http://i.imgur.com/eJIALUZ.gif',
- ':llamawhat:': 'http://i.imgur.com/KdH5d2T.gif',
- ':mierda:': 'https://images.emojiterra.com/google/android-oreo/128px/1f4a9.png',
- ':ditto:': 'https://cdn.betterttv.net/emote/554da1a289d53f2d12781907/2x',
- ':feelsnc:': 'https://i.imgur.com/BsP6ctd.png',
- ':feelsbn:': 'http://i.imgur.com/wp51rIg.png',
- ':feelsdeal:': 'https://s-media-cache-ak0.pinimg.com/originals/ca/c6/4a/cac64aa3ea9c836b93a00b347c5fcfd1.png',
- ':feelsgay:': 'http://www.stickpng.com/assets/images/5845cad31046ab543d25238c.png',
- ':feelscool:': 'https://risibank.fr/cache/stickers/d34/3498-full.png',
- ':feelsperv:': 'http://www.stickpng.com/assets/images/5859b173711f64423aa5e050.png',
- ':eeveesad:': 'http://123emoji.com/wp-content/uploads/2017/08/sticker-9-150.png',
- ':dance:': 'https://i.imgur.com/eMxPpbf.gif',
- ':tympole:': 'https://play.destinyshowdown.net/resources/custom-emojis/tympole.png',
- ':dude:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/confused-face_1f615.png',
- ':loves:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/smiling-face-with-heart-shaped-eyes_1f60d.png',
- ':angel:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/smiling-face-with-halo_1f607.png',
- ':oh:': 'https://images.emojiterra.com/twitter/128px/1f632.png',
- ':XD:': 'https://images.emojiterra.com/twitter/128px/1f606.png',
- ':lol:': 'https://images.emojiterra.com/twitter/128px/1f610.png',
- ':ehhh:': 'https://images.emojiterra.com/twitter/128px/1f61b.png',
- ':haha:': 'https://images.emojiterra.com/twitter/128px/1f602.png',
- ':ohno:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/astonished-face_1f632.png',
- ':heartsad:': 'https://images.emojiterra.com/twitter/128px/1f494.png',
- ':heart:': 'https://images.emojiterra.com/twitter/128px/2764.png',
- ':guiño:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/winking-face_1f609.png',
- ':omg:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/grinning-face-with-smiling-eyes_1f601.png',
- ':llorando:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/loudly-crying-face_1f62d.png',
- ':mono1:': 'https://images.emojiterra.com/twitter/128px/1f64a.png',
- ':mono2:': 'https://images.emojiterra.com/twitter/128px/1f649.png',
- ':mono3:': 'https://images.emojiterra.com/twitter/128px/1f648.png',
- ':disculpa:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/pensive-face_1f614.png',
- ':ops:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/kissing-face_1f617.png',
- ':feliz:': 'https://images.emojiterra.com/twitter/128px/1f601.png',
- ':furioso:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/pouting-face_1f621.png',
- ':bravo:': 'https://emojipedia-us.s3.amazonaws.com/thumbs/72/whatsapp/116/face-with-look-of-triumph_1f624.png',
- ':eyes:': 'https://images.emojiterra.com/twitter/512px/1f440.png',
- ':kheberga:': 'https://cdn.discordapp.com/emojis/466026815115493377.png',
- ':thism8:': 'https://static1.squarespace.com/static/541fdc96e4b0a6db31386559/t/58e207271b10e31ed463d4dd/1491207980725/',
- ':feelsasty:': 'https://i.kym-cdn.com/photos/images/facebook/000/952/389/ca9.png',
- ':feelsnice:': 'https://i.imgur.com/lAlUwZ4.png',
- ':feelssniper:': 'https://i.kym-cdn.com/photos/images/masonry/001/234/596/4a6.jpeg',
- ':feelstrump:': 'https://i.kym-cdn.com/photos/images/masonry/001/170/288/368.jpg',
- ':feelsgreninja:': 'https://i.kym-cdn.com/photos/images/masonry/001/171/821/1f3.png',
- ':feelssceptile:': 'https://i.kym-cdn.com/photos/images/newsfeed/001/114/910/e40.png',
- ':pikasad:': 'https://cdn.frankerfacez.com/emoticon/200142/4',
- ':feelsweirdknife:': 'https://cdn.frankerfacez.com/emoticon/265224/4',
- ':feelsweirdgun:': 'https://cdn.frankerfacez.com/emoticon/258488/4',
- ':feelsrage:': 'https://cdn.frankerfacez.com/emoticon/251871/4',
- });
- }
- const emotes = demFeels.getEmotes();
- const emotesKeys = Object.keys(emotes).sort();
- /**
- * Parse emoticons in message.
- *
- * @param {String} message
- * @param {Object} room
- * @param {Object} user
- * @param {Boolean} pm - returns a string if it is in private messages
- * @returns {Boolean|String}
- */
- function parseEmoticons(message, room, user, pm) {
- if (typeof message !== 'string' || (!pm && room.disableEmoticons)) return false;
- let match = false;
- let len = emotesKeys.length;
- while (len--) {
- if (message && message.indexOf(emotesKeys[len]) >= 0) {
- match = true;
- break;
- }
- }
- if (!match) return false;
- // escape HTML
- message = Chat.escapeHTML(message);
- // add emotes
- message = demFeels(message);
- // __italics__
- message = message.replace(/\_\_([^< ](?:[^<]*?[^< ])?)\_\_(?![^<]*?<\/a)/g, '<i>$1</i>');
- // **bold**
- message = message.replace(/\*\*([^< ](?:[^<]*?[^< ])?)\*\*/g, '<b>$1</b>');
- let group = user.getIdentity().charAt(0);
- if (room && room.auth) group = room.auth[user.userid] || group;
- if (pm && !user.hiding) group = user.group;
- if (pm) return "<div class='chat' style='display:inline'>" + "<em class='mine'>" + message + "</em></div>";
- let style = "background:none;border:0;padding:0 5px 0 0;font-family:Verdana,Helvetica,Arial,sans-serif;font-size:9pt;cursor:pointer";
- let name = user.getIdentity(room).substr(0, 1) + user.name;
- if (Users.ShadowBan.checkBanned(user)) {
- user.sendTo(room, message = (`${(room.type === 'chat' ? '|c:|' + ~~(Date.now() / 1000) + '|' : '|c|') + name}|/html ${message}`));
- Users.ShadowBan.addMessage(user, "To " + room);
- return true;
- } else {
- message = room.add(`${(room.type === 'chat' ? '|c:|' + ~~(Date.now() / 1000) + '|' : '|c|') + name}|/html ${message}`).update();
- }
- for (let u in room.users) {
- let targetUser = Users.get(u);
- // in case the user is offline
- if (!targetUser || !targetUser.connected) continue;
- // if user is ignoring emotes
- if (targetUser.blockEmoticons) {
- targetUser.sendTo(room, "|c|" + group + user.name + "|" + originalMessage);
- }
- }
- return true;
- }
- /**
- * Create a two column table listing emoticons.
- *
- * @return {String} emotes table
- */
- function create_table() {
- let emotes_name = Object.keys(emotes);
- let emotes_list = [];
- let emotes_group_list = [];
- let len = emotes_name.length;
- for (let i = 0; i < len; i++) {
- emotes_list.push("<td style='padding: 5px; box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5) inset; border-radius: 5px;'>" + "<img src='" + emotes[emotes_name[i]] + "'' title='" + emotes_name[i] + "' height='50' width='50' style='vertical-align: middle; padding-right: 5px;' />" + emotes_name[i] + "</td>");
- }
- for (let i = 0; i < len; i += 4) {
- let emoteOutput = [emotes_list[i], emotes_list[i + 1], emotes_list[i + 2], emotes_list[i + 3]];
- if (i < len) emotes_group_list.push("<tr>" + emoteOutput.join('') + "</tr>");
- }
- return (
- "<div class='infobox'><center><font style='font-weight: bold; text-decoration: underline; color: #555;'>Lista delle Emotes</font></center>" +
- "<div style='max-height: 300px; overflow-y: scroll; padding: 5px 0px;'><table style='background: rgba(245, 245, 245, 0.4); border: 1px solid #BBB;' width='100%'>" +
- emotes_group_list.join("") +
- "</table></div></div>"
- );
- }
- let emotes_table = create_table();
- exports.commands = {
- blockemote: 'blockemoticons',
- blockemotes: 'blockemoticons',
- blockemoticon: 'blockemoticons',
- blockemoticons: function (target, room, user) {
- if (user.blockEmoticons === (target || true)) return this.sendReply("You are already blocking emoticons in private messages! To unblock, use /unblockemoticons");
- user.blockEmoticons = true;
- return this.sendReply("You are now blocking emoticons in private messages.");
- },
- blockemoticonshelp: ["/blockemoticons - Blocks emoticons in private messages. Unblock them with /unblockemoticons."],
- unblockemote: 'unblockemoticons',
- unblockemotes: 'unblockemoticons',
- unblockemoticon: 'unblockemoticons',
- unblockemoticons: function (target, room, user) {
- if (!user.blockEmoticons) return this.sendReply("You are not blocking emoticons in private messages! To block, use /blockemoticons");
- user.blockEmoticons = false;
- return this.sendReply("You are no longer blocking emoticons in private messages.");
- },
- unblockemoticonshelp: ["/unblockemoticons - Unblocks emoticons in private messages. Block them with /blockemoticons."],
- emotes: 'emoticons',
- emoticons: function (target, room, user) {
- if (!this.runBroadcast()) return;
- this.sendReply("|raw|" + emotes_table);
- },
- emoticonshelp: ["/emoticons - Get a list of emoticons."],
- toggleemote: 'toggleemoticons',
- toggleemotes: 'toggleemoticons',
- toggleemoticons: function (target, room, user) {
- if (!this.can('declare', null, room)) return false;
- room.disableEmoticons = !room.disableEmoticons;
- this.sendReply("Disallowing emoticons is set to " + room.disableEmoticons + " in this room.");
- if (room.disableEmoticons) {
- this.add("|raw|<div class=\"broadcast-red\"><b>Emoticons are disabled!</b><br />Emoticons will not work.</div>");
- } else {
- this.add("|raw|<div class=\"broadcast-blue\"><b>Emoticons are enabled!</b><br />Emoticons will work now.</div>");
- }
- },
- toggleemoticonshelp: ["/toggleemoticons - Toggle emoticons on or off."],
- rande: 'randemote',
- randemote: function (target, room, user) {
- if (!this.runBroadcast()) return;
- let rng = Math.floor(Math.random() * emotesKeys.length);
- let randomEmote = emotesKeys[rng];
- this.sendReplyBox("<img src='" + emotes[randomEmote] + "' title='" + randomEmote + "' height='50' width='50' />");
- },
- randemotehelp: ["/randemote - Get a random emote."],
- };
- SHADOWBAN.JS
- 'use strict';
- const ROOM_NAME = "Shadow Ban Room";
- let room = Rooms.get(toId(ROOM_NAME));
- if (!room) {
- Rooms.global.addChatRoom(ROOM_NAME);
- room = Rooms.get(toId(ROOM_NAME));
- room.isPrivate = true;
- room.staffRoom = true;
- room.staffAutojoin = true;
- room.addedUsers = {};
- if (room.chatRoomData) {
- room.chatRoomData.isPrivate = true;
- room.chatRoomData.staffRoom = true;
- room.chatRoomData.staffAutojoin = true;
- room.chatRoomData.addedUsers = room.addedUsers;
- Rooms.global.writeChatRoomData();
- }
- }
- if (Object.keys(room.addedUsers).length > 0) {
- setImmediate(function () {
- room.add("||Loaded user list: " + Object.keys(room.addedUsers).sort().join(", "));
- room.update();
- });
- }
- exports.room = room;
- function getAllAlts(user) {
- let targets = {};
- if (typeof user === 'string') {
- targets[toId(user)] = 1;
- } else {
- user.getAltUsers().map(u => u.getLastName()).concat(user.name).forEach(function (altName) {
- let alt = Users.get(altName);
- if (!alt.named) return;
- targets[toId(alt)] = 1;
- Object.keys(alt.prevNames).forEach(function (name) {
- targets[toId(name)] = 1;
- });
- });
- }
- return targets;
- }
- function intersectAndExclude(a, b) {
- let intersection = [];
- let exclusionA = [];
- let exclusionB = [];
- let ai = 0;
- let bi = 0;
- while (ai < a.length && bi < b.length) {
- let difference = a[ai].localeCompare(b[bi]);
- if (difference < 0) {
- exclusionA.push(a[ai]);
- ++ai;
- } else if (difference > 0) {
- exclusionB.push(b[bi]);
- ++bi;
- } else {
- intersection.push(a[ai]);
- ++ai;
- ++bi;
- }
- }
- Array.prototype.push.apply(exclusionA, a.slice(ai));
- Array.prototype.push.apply(exclusionB, b.slice(bi));
- return {intersection: intersection, exclusionA: exclusionA, exclusionB: exclusionB};
- }
- let checkBannedCache = {};
- exports.checkBanned = function (user) {
- let userId = toId(user);
- if (Users(userId).isStaff || Users(userId).isSysop) return false;
- if (userId in checkBannedCache) return checkBannedCache[userId];
- if (Users(userId).shadowbanned) return true;
- //console.log("Shadow ban cache miss:", userId);
- let targets = Object.keys(getAllAlts(user)).sort();
- let bannedUsers = Object.keys(room.addedUsers).sort();
- let matches = intersectAndExclude(targets, bannedUsers);
- let isBanned = matches.intersection.length !== 0;
- for (let t = 0; t < targets.length; ++t) {
- if (isBanned) room.addedUsers[targets[t]] = 1;
- checkBannedCache[targets[t]] = isBanned;
- }
- if (!isBanned) return false;
- if (matches.exclusionA.length > 0) {
- Rooms.global.writeChatRoomData();
- room.add("||Alts of " + matches.intersection[0] + " automatically added: " + matches.exclusionA.join(", "));
- }
- return true;
- };
- let addUser = exports.addUser = function (user) {
- let targets = getAllAlts(user);
- for (let u in targets) {
- if (room.addedUsers[u]) {
- delete targets[u];
- } else {
- room.addedUsers[u] = 1;
- }
- checkBannedCache[u] = true;
- }
- targets = Object.keys(targets).sort();
- if (targets.length > 0) {
- Rooms.global.writeChatRoomData();
- room.add("||Added users: " + targets.join(", "));
- room.update();
- }
- return targets;
- };
- let removeUser = exports.removeUser = function (user) {
- let targets = getAllAlts(user);
- for (let u in targets) {
- if (!room.addedUsers[u]) {
- delete targets[u];
- } else {
- delete room.addedUsers[u];
- }
- checkBannedCache[u] = false;
- }
- targets = Object.keys(targets).sort();
- if (targets.length > 0) {
- Rooms.global.writeChatRoomData();
- room.add("||Removed users: " + targets.join(", "));
- room.update();
- }
- return targets;
- };
- exports.addMessage = function (user, tag, message) {
- room.add('|c|' + user.getIdentity() + '|__(' + tag + ')__ ' + message);
- room.update();
- };
- exports.commands = {
- spam: 'shadowban',
- sban: 'shadowban',
- shadowban: function (target, room, user) {
- if (!target) return this.sendReply("/shadowban OR /sban [username], [secondary command], [reason] - Sends all the user's messages to the shadow ban room. Requires &");
- let params = this.splitTarget(target).split(',');
- let action = params[0].trim().toLowerCase();
- let reason = params.slice(1).join(',').trim();
- if (!(action in Chat.commands)) {
- action = 'mute';
- reason = params.join(',').trim();
- }
- if (!this.targetUser) return this.sendReply("User '" + this.targetUsername + "' not found.");
- if (!this.can("rangeban", this.targetUser)) return;
- let targets = addUser(this.targetUser);
- if (targets.length === 0) {
- return this.sendReply('||' + this.targetUsername + " is already shadow banned or isn't named.");
- }
- this.privateModAction("(" + user.name + " has shadow banned: " + targets.join(", ") + (reason ? " (" + reason + ")" : "") + ")");
- //return this.parse('/' + action + ' ' + toId(this.targetUser) + ',' + reason);
- },
- unspam: 'unshadowban',
- unsban: 'unshadowban',
- unshadowban: function (target, room, user) {
- if (!target) return this.sendReply("/unshadowban OR /unsban [username] - Undoes /shadowban (except the secondary command).");
- this.splitTarget(target);
- if (!this.can("rangeban")) return;
- let targets = removeUser(this.targetUser || this.targetUsername);
- if (targets.length === 0) {
- return this.sendReply('||' + this.targetUsername + " is not shadow banned.");
- }
- this.privateModAction("(" + user.name + " has shadow unbanned: " + targets.join(", ") + ")");
- },
- sbanlist: function (target, room, user) {
- if (!target && !this.can("rangeban")) return this.sendReply("The command '/sbanlist' was unrecognized. To send a message starting with '/sbanlist', type '//sbanlist'.");
- if (!this.canTalk() && !user.can('bypassall')) return this.sendReply("You cannot do this while unable to talk.");
- if (!this.can("rangeban")) return false;
- let result = [];
- let data = Rooms(toId(ROOM_NAME)).chatRoomData.addedUsers;
- for (let key in data) {
- result.push(key);
- }
- Users.get(toId(user.name)).send('|popup| Here is a list of sbanned users: \n' + result.join(', '));
- },
- };
- Users.ShadowBan = exports;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement