normalize indents

This commit is contained in:
Lamp 2023-10-10 16:14:42 -07:00
parent 1af74e957d
commit e21a264ed0
9 changed files with 224 additions and 234 deletions

View File

@ -1,47 +1,47 @@
global.testmode = process.env.TEST ? true : false; global.testmode = process.env.TEST ? true : false;
module.exports = { module.exports = {
"DISCORD_TOKEN": process.env.DISCORD_TOKEN, "DISCORD_TOKEN": process.env.DISCORD_TOKEN,
"webhooks": { "webhooks": {
"welcome": process.env.WEBHOOK_WELCOME, "welcome": process.env.WEBHOOK_WELCOME,
"error": process.env.WEBHOOK_ERROR, "error": process.env.WEBHOOK_ERROR,
"ddp": process.env.WEBHOOK_DDP, "ddp": process.env.WEBHOOK_DDP,
"pinboard": process.env.WEBHOOK_PINBOARD "pinboard": process.env.WEBHOOK_PINBOARD
}, },
"opID": "330499035419115522", "opID": "330499035419115522",
"guildID": testmode ? "467473467634089985" : "321819041348190249", "guildID": testmode ? "467473467634089985" : "321819041348190249",
"channels": { // includes voice channels & category channels "channels": { // includes voice channels & category channels
"main": testmode ? "467473467634089987" : "321819041348190249", "main": testmode ? "467473467634089987" : "321819041348190249",
"view_deleted_channels": testmode ? "467473467634089989" : "425060452129701889", "view_deleted_channels": testmode ? "467473467634089989" : "425060452129701889",
"name_collection": testmode ? "467481952728121345" : '379738469511069698', "name_collection": testmode ? "467481952728121345" : '379738469511069698',
"mpp_bridges": testmode ? "467481904707534850" : '360557444952227851', "mpp_bridges": testmode ? "467481904707534850" : '360557444952227851',
"user_channels": testmode ? "467482031157149709" : '399735134061985792', "user_channels": testmode ? "467482031157149709" : '399735134061985792',
"deleted_channels": testmode ? "467482085657935872" : '425054198699261953', "deleted_channels": testmode ? "467482085657935872" : '425054198699261953',
"deleted_bridges": testmode ? "467482121657778176" : '696954288752164914', "deleted_bridges": testmode ? "467482121657778176" : '696954288752164914',
"mpp_screenshot": testmode ? "467482164611514388" : '383773548810076163', "mpp_screenshot": testmode ? "467482164611514388" : '383773548810076163',
"owop_screenshot": testmode ? "467482202217906226" : '399079481161023492' "owop_screenshot": testmode ? "467482202217906226" : '399079481161023492'
}, },
"roles": { "roles": {
"viewing_deleted_channels": testmode ? "467473718353068042" : "425060792455397376", "viewing_deleted_channels": testmode ? "467473718353068042" : "425060792455397376",
}, },
"mppname": "[discord.gg/k44Eqha]", "mppname": "[discord.gg/k44Eqha]",
"disabledRooms": [ "disabledRooms": [
"RP Room", "RP Room",
"Legends of Alorgon {RP Room}", "Legends of Alorgon {RP Room}",
"Legends of Alorgon", "Legends of Alorgon",
"Breastmilk ♥ 7:45 AM" "Breastmilk ♥ 7:45 AM"
], ],
"owop_captcha_password": process.env.OWOP_CAPTCHA_PASSWORD, "owop_captcha_password": process.env.OWOP_CAPTCHA_PASSWORD,
"pr_password": process.env.PR_PASSWORD, "pr_password": process.env.PR_PASSWORD,
"mpc_token": process.env.MPC_TOKEN, "mpc_token": process.env.MPC_TOKEN,
} }

View File

@ -9,56 +9,56 @@ var wasConnected = false;
//var myId; //var myId;
var wsc = new WebSocketMessageCollector(async function(data, startDate, endDate){ var wsc = new WebSocketMessageCollector(async function(data, startDate, endDate){
await webhook.send({files:[{ await webhook.send({files:[{
attachment: data, attachment: data,
name: `daydun piano main raw data recording from ${startDate.toISOString()} to ${endDate.toISOString()} .txt.gz` name: `daydun piano main raw data recording from ${startDate.toISOString()} to ${endDate.toISOString()} .txt.gz`
}]}); }]});
}); });
(function connect() { (function connect() {
ws = new WebSocket("wss://daydun.com:5012/?nick=%5Bdiscord.gg%2Fk44Eqha%5D"); ws = new WebSocket("wss://daydun.com:5012/?nick=%5Bdiscord.gg%2Fk44Eqha%5D");
ws.on("open", () => { ws.on("open", () => {
if (!wasConnected) send2discord("**Connected**"); if (!wasConnected) send2discord("**Connected**");
wasConnected = true; wasConnected = true;
}); });
ws.on("message", message => { ws.on("message", message => {
wsc.collect(message); wsc.collect(message);
if (typeof message != 'string') return; if (typeof message != 'string') return;
var transmission = JSON.parse(message); var transmission = JSON.parse(message);
if (transmission.type == 'chat') { if (transmission.type == 'chat') {
let chatmsg = transmission.message; let chatmsg = transmission.message;
if (chatmsg.type == "message") { if (chatmsg.type == "message") {
//if (chatmsg.id != myId) //if (chatmsg.id != myId)
if (!chatmsg.content.startsWith('\u034f')) if (!chatmsg.content.startsWith('\u034f'))
send2discord(`**${sanitizeName(chatmsg.user.nick)}:** ${chatmsg.content}`); send2discord(`**${sanitizeName(chatmsg.user.nick)}:** ${chatmsg.content}`);
} else if (chatmsg.type == "join") { } else if (chatmsg.type == "join") {
send2discord(`__***${sanitizeName(chatmsg.nick || chatmsg.id)} joined.***__`); send2discord(`__***${sanitizeName(chatmsg.nick || chatmsg.id)} joined.***__`);
} else if (chatmsg.type == "leave") { } else if (chatmsg.type == "leave") {
send2discord(`__***${sanitizeName(chatmsg.nick || chatmsg.id)} left.***__`); send2discord(`__***${sanitizeName(chatmsg.nick || chatmsg.id)} left.***__`);
} }
} /*else if (transmission.type == 'load') { } /*else if (transmission.type == 'load') {
myId = transmission.id; myId = transmission.id;
}*/ }*/
}); });
ws.on("error", error => handleError(error)); ws.on("error", error => handleError(error));
ws.on("close", () => { ws.on("close", () => {
if (wasConnected) send2discord("**Disconnected**"); if (wasConnected) send2discord("**Disconnected**");
wasConnected = false; wasConnected = false;
setTimeout(connect, 5000); setTimeout(connect, 5000);
}); });
})(); })();
function send2discord(message) { function send2discord(message) {
webhook.send(message.substring(0,2000)); webhook.send(message.substring(0,2000));
} }
function send2ddp(message) { function send2ddp(message) {
if (ws.readyState == WebSocket.OPEN) ws.send(JSON.stringify({type:"chat",message})); if (ws.readyState == WebSocket.OPEN) ws.send(JSON.stringify({type:"chat",message}));
} }
dClient.on("messageCreate", message => { dClient.on("messageCreate", message => {
if (message.channel.id != "508890674138054667" || message.author.bot) return; if (message.channel.id != "508890674138054667" || message.author.bot) return;
var x = message.cleanContent; var x = message.cleanContent;
if (message.attachments.size > 0) x += ' ' + message.attachments.map(a => a.url).join(' '); if (message.attachments.size > 0) x += ' ' + message.attachments.map(a => a.url).join(' ');
send2ddp(`\u034f${message.member.displayName}#${message.author.discriminator}: ${x}`); send2ddp(`\u034f${message.member.displayName}#${message.author.discriminator}: ${x}`);
}); });

View File

@ -1,28 +1,28 @@
var gzip = require("util").promisify(require("zlib").gzip); var gzip = require("util").promisify(require("zlib").gzip);
module.exports = class WebSocketMessageCollector { module.exports = class WebSocketMessageCollector {
constructor(dispatchFunction) { constructor(dispatchFunction) {
this.maxSize = 8000000; this.maxSize = 8000000;
this.data = ""; this.data = "";
this.startDate = new Date(); this.startDate = new Date();
this.dispatchFunction = dispatchFunction; this.dispatchFunction = dispatchFunction;
exitHook(cb => { exitHook(cb => {
this.package().then(cb); this.package().then(cb);
}); });
} }
collect(message) { collect(message) {
message = message.data || message; message = message.data || message;
if (message instanceof ArrayBuffer) message = Buffer.from(message).toString('base64'); if (message instanceof ArrayBuffer) message = Buffer.from(message).toString('base64');
var line = `${Date.now()} ${message}\n`; var line = `${Date.now()} ${message}\n`;
this.data += line; this.data += line;
if (this.data.length > this.maxSize) this.package(); if (this.data.length > this.maxSize) this.package();
} }
async package() { async package() {
var data = this.data, startDate = this.startDate, endDate = new Date(); var data = this.data, startDate = this.startDate, endDate = new Date();
this.data = "", this.startDate = new Date(); this.data = "", this.startDate = new Date();
data = await gzip(data); data = await gzip(data);
await this.dispatchFunction(data, startDate, endDate); await this.dispatchFunction(data, startDate, endDate);
} }
} }

108
misc.js
View File

@ -1,83 +1,73 @@
// join/leave // join/leave
(async function(){ (async function(){
var webhook = new Discord.WebhookClient({url: config.webhooks.welcome}, {allowedMentions: {parse: []}}); var webhook = new Discord.WebhookClient({url: config.webhooks.welcome}, {allowedMentions: {parse: []}});
dClient.on('guildMemberAdd', async member => { dClient.on('guildMemberAdd', async member => {
if (member.guild.id != config.guildID) return; if (member.guild.id != config.guildID) return;
let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username; let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username;
webhook.send({content: `${member} joined.`, username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048})}); webhook.send({content: `${member} joined.`, username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048})});
}); });
dClient.on('guildMemberRemove', async member => { dClient.on('guildMemberRemove', async member => {
if (member.guild.id != config.guildID) return; if (member.guild.id != config.guildID) return;
let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username; let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username;
webhook.send({content: `${member.user.tag} left.`, username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048})}); webhook.send({content: `${member.user.tag} left.`, username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048})});
}); });
})(); })();
// view deleted channels // view deleted channels
(async function(){ (async function(){
dClient.on('voiceStateUpdate', async (oldState, newState) => { dClient.on('voiceStateUpdate', async (oldState, newState) => {
if (oldState.channelId != config.channels.view_deleted_channels && newState.channelId == config.channels.view_deleted_channels) { if (oldState.channelId != config.channels.view_deleted_channels && newState.channelId == config.channels.view_deleted_channels) {
// member joined the channel // member joined the channel
newState.member.roles.add(config.roles.viewing_deleted_channels); newState.member.roles.add(config.roles.viewing_deleted_channels);
} else if (oldState.channelId == config.channels.view_deleted_channels && newState.channelId != config.channels.view_deleted_channels) { } else if (oldState.channelId == config.channels.view_deleted_channels && newState.channelId != config.channels.view_deleted_channels) {
// member left the channel // member left the channel
newState.member.roles.remove(config.roles.viewing_deleted_channels); newState.member.roles.remove(config.roles.viewing_deleted_channels);
} }
}); });
})(); })();
// arrange bots at bottom of list // arrange bots at bottom of list
(async function(){ (async function(){
let prefix = "\u17b5"; let prefix = "\u17b5";
let onNick = async member => { let onNick = async member => {
if (member.guild.id != config.guildID) return; if (member.guild.id != config.guildID) return;
if (member.user.bot && !member.displayName.startsWith(prefix)) if (member.user.bot && !member.displayName.startsWith(prefix))
await member.setNickname(`${prefix}${member.displayName}`.substring(0,32)); await member.setNickname(`${prefix}${member.displayName}`.substring(0,32));
}; };
dClient.on('guildMemberAdd', onNick); dClient.on('guildMemberAdd', onNick);
dClient.on('guildMemberUpdate', async (oldMember, newMember) => { dClient.on('guildMemberUpdate', async (oldMember, newMember) => {
if (newMember.displayName != oldMember.displayName) await onNick(newMember); if (newMember.displayName != oldMember.displayName) await onNick(newMember);
}); });
})(); })();
// persistent emojis // persistent emojis
dClient.on("emojiDelete", async emoji => { dClient.on("emojiDelete", async emoji => {
console.log("emoji deleted:", emoji.name, emoji.url); console.log("emoji deleted:", emoji.name, emoji.url);
if (global.disableEmojiProtection) return; if (global.disableEmojiProtection) return;
if (emoji.name.toLowerCase().includes('delete')) return; if (emoji.name.toLowerCase().includes('delete')) return;
async function readdEmoji() { async function readdEmoji() {
await emoji.guild.emojis.create(emoji.url, emoji.name); await emoji.guild.emojis.create(emoji.url, emoji.name);
delete readdEmoji; delete readdEmoji;
} }
// re-add emoji in 5 to 10 minutes // re-add emoji in 5 to 10 minutes
setTimeout(() => { setTimeout(() => {
if (readdEmoji) readdEmoji(); if (readdEmoji) readdEmoji();
}, 300000 + Math.random() * 300000); }, 300000 + Math.random() * 300000);
// wouldn't want emoji to be lost if process is stopped before timeout ends // wouldn't want emoji to be lost if process is stopped before timeout ends
exitHook(callback => { exitHook(callback => {
if (readdEmoji) readdEmoji().then(() => callback()); if (readdEmoji) readdEmoji().then(() => callback());
else callback(); else callback();
}); });
}); });
// allow anyone to pin a message via reaction // allow anyone to pin a message via reaction
// todo need enable partials for it to work on old messages // todo need enable partials for it to work on old messages
dClient.on("messageReactionAdd", async (messageReaction) => { dClient.on("messageReactionAdd", async (messageReaction) => {
if (messageReaction.guild?.id != config.guildID) return; if (messageReaction.guild?.id != config.guildID) return;
if (messageReaction.emoji.name == "📌" || messageReaction.emoji.name == "📍") if (messageReaction.emoji.name == "📌" || messageReaction.emoji.name == "📍")
await messageReaction.message.pin(); await messageReaction.message.pin();
}); });

View File

@ -117,19 +117,19 @@ global.createMPPbridge = async function createMPPbridge({room, channel, uri}) {
// announce join/leave/rename // announce join/leave/rename
gClient.prependListener("p", async participant => { gClient.prependListener("p", async participant => {
if (gClient.ppl[participant.id]) { // is update if (gClient.ppl[participant.id]) { // is update
let oldName = gClient.ppl[participant.id].name, newName = participant.name; let oldName = gClient.ppl[participant.id].name, newName = participant.name;
if (newName != oldName) if (newName != oldName)
d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(oldName)}** changed their name to **${sanitizeName(newName)}**___`); d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(oldName)}** changed their name to **${sanitizeName(newName)}**___`);
} else { // is join } else { // is join
d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(participant.name)}** entered the room.___`); d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(participant.name)}** entered the room.___`);
} }
}); });
gClient.prependListener("bye", async msg => { gClient.prependListener("bye", async msg => {
var participant = gClient.ppl[msg.p]; var participant = gClient.ppl[msg.p];
if (!participant) return; if (!participant) return;
d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(participant.name)}** left the room.___`); d.send(`\`${participant._id.substr(0,6)}\` ___**${sanitizeName(participant.name)}** left the room.___`);
}); });
@ -143,8 +143,8 @@ global.createMPPbridge = async function createMPPbridge({room, channel, uri}) {
// handle bans // handle bans
if (msg.text && (msg.text.startsWith('Banned from "'+room+'"') || msg.text.startsWith('Currently banned from "'+room+'"'))) { if (msg.text && (msg.text.startsWith('Banned from "'+room+'"') || msg.text.startsWith('Currently banned from "'+room+'"'))) {
// Banned from "{room}" for {n} minutes. // Banned from "{room}" for {n} minutes.
// Currently banned from "{room}" for {n} minutes. // Currently banned from "{room}" for {n} minutes.
let arr = msg.text.split(' '); let arr = msg.text.split(' ');
arr.pop(); arr.pop();
let minutes = arr.pop(); let minutes = arr.pop();
@ -170,7 +170,7 @@ global.createMPPbridge = async function createMPPbridge({room, channel, uri}) {
}); });
// addons // addons
var wsc = new WebSocketMessageCollector(async function(data, startDate, endDate) { var wsc = new WebSocketMessageCollector(async function(data, startDate, endDate) {
var attachmentName = `${uri} ${room} raw data recording from ${startDate.toISOString()} to ${endDate.toISOString()} .txt.gz`; var attachmentName = `${uri} ${room} raw data recording from ${startDate.toISOString()} to ${endDate.toISOString()} .txt.gz`;

View File

@ -1,48 +1,48 @@
const socketCluster = require("socketcluster-client") const socketCluster = require("socketcluster-client")
const EventEmitter = require("events").EventEmitter; const EventEmitter = require("events").EventEmitter;
class PRClient extends EventEmitter { class PRClient extends EventEmitter {
constructor(credentials, options) { constructor(credentials, options) {
super() super()
EventEmitter.call(this); EventEmitter.call(this);
this.options = options; this.options = options;
this.socket; this.socket;
this.channels = {}; this.channels = {};
this.credentials = credentials this.credentials = credentials
} }
connect() { connect() {
if (!this.options) { if (!this.options) {
this.options = { this.options = {
path: "/socketcluster/", path: "/socketcluster/",
hostname: "www.pianorhythm.me", hostname: "www.pianorhythm.me",
port: 443, port: 443,
secure: true, secure: true,
autoReconnect: true, autoReconnect: true,
} }
} }
// Initiate the connection to the server // Initiate the connection to the server
this.socket = socketCluster.connect(this.options); this.socket = socketCluster.connect(this.options);
this.socket.connect(); this.socket.connect();
this.socket.on("error", (msg) => { this.socket.on("error", (msg) => {
handleError(msg, "pr socket"); handleError(msg, "pr socket");
}) })
this.socket.on("connect", () => { this.socket.on("connect", () => {
console.log("Connected!") console.log("Connected!")
this.socket.emit("enableAuthLogin", { this.socket.emit("enableAuthLogin", {
enable: true, enable: true,
roomName: this.credentials.roomName roomName: this.credentials.roomName
}); });
this.socket.emit("enableCursor", { this.socket.emit("enableCursor", {
enable: true enable: true
}); });
this.socket.emit("login", { this.socket.emit("login", {
password: this.credentials.password, password: this.credentials.password,
roomName: this.credentials.roomName, roomName: this.credentials.roomName,
username: this.credentials.username username: this.credentials.username
}); });
this.socket.emit("getPlayerStats", { this.socket.emit("getPlayerStats", {
"username": this.credentials.username "username": this.credentials.username
}) })
}) })
} }
} }
module.exports = PRClient; module.exports = PRClient;

View File

@ -19,24 +19,24 @@ client.socket.on("setRoom", function (data, callback) {
}) })
async function messagehandle(data) { async function messagehandle(data) {
if (data && data.type) { if (data && data.type) {
switch (data.type) { switch (data.type) {
case "chat": case "chat":
if (data && data.message) { if (data && data.message) {
let name = data.name || ""; let name = data.name || "";
let effect = data.effect || ""; let effect = data.effect || "";
let roomName = data.roomName; let roomName = data.roomName;
let color = data.color; let color = data.color;
let id = data.sID || data.socketID || data.id; let id = data.sID || data.socketID || data.id;
if (id == client.socket.id) return; if (id == client.socket.id) return;
let c = dClient.channels.resolve("593943518351982603"); let c = dClient.channels.resolve("593943518351982603");
let msg; let msg;
(!name && (data.message.startsWith("[i]"))) ? msg = `*${data.message.split("[i]")[1]}*` : msg = `**${sanitizeName(name)}:** ${data.message}`; (!name && (data.message.startsWith("[i]"))) ? msg = `*${data.message.split("[i]")[1]}*` : msg = `**${sanitizeName(name)}:** ${data.message}`;
if (c) c.send(msg); if (c) c.send(msg);
} }
break; break;
} }
} }
} }
dClient.on("messageCreate", async message => { dClient.on("messageCreate", async message => {
@ -50,5 +50,5 @@ dClient.on("messageCreate", async message => {
"uuid": "[discord.gg/k44Eqha]", "uuid": "[discord.gg/k44Eqha]",
"color": "#8012ed", "color": "#8012ed",
"name": "[discord.gg/k44Eqha]" "name": "[discord.gg/k44Eqha]"
}); });
}); });

View File

@ -1,7 +1,7 @@
{ {
"dependencies": { "dependencies": {
"discord.js": "^12.5.3", "discord.js": "^12.5.3",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"puppeteer": "^10.2.0" "puppeteer": "^10.2.0"
} }
} }

View File

@ -1,11 +1,11 @@
global.random = function (array) { global.random = function (array) {
return array[Math.floor(Math.random() * array.length)] return array[Math.floor(Math.random() * array.length)]
} }
global.sanitizeName = function sanitizeName(str){ // for showing names in discord global.sanitizeName = function sanitizeName(str){ // for showing names in discord
str = str.replace(/[_~*\\]/g,"\\$&"); // formatting str = str.replace(/[_~*\\]/g,"\\$&"); // formatting
str = str.replace(/discord.gg\//g, 'discord.gg\\/'); // invites str = str.replace(/discord.gg\//g, 'discord.gg\\/'); // invites
str = str.replace(/(http|https):\/\//g, "$1\\://"); // urls str = str.replace(/(http|https):\/\//g, "$1\\://"); // urls
return str; return str;
} }