From 915efb7803b3c0e95509a351b96a698f90448ad6 Mon Sep 17 00:00:00 2001 From: Bop It Freak Date: Thu, 27 Jun 2019 16:14:59 -0700 Subject: [PATCH] PianoRhythm Bridge --- src/prbridge/PRClient.js | 50 ++++++++++++++++++++++++++++ src/prbridge/index.js | 71 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 src/prbridge/PRClient.js create mode 100644 src/prbridge/index.js diff --git a/src/prbridge/PRClient.js b/src/prbridge/PRClient.js new file mode 100644 index 0000000..914ce2a --- /dev/null +++ b/src/prbridge/PRClient.js @@ -0,0 +1,50 @@ +const socketCluster = require("socketcluster-client") +const EventEmitter = require("events").EventEmitter; +const HttpsProxyAgent = require("https-proxy-agent"); +const SocksProxyAgent = require("socks-proxy-agent"); +class PRClient extends EventEmitter { + constructor(credentials, options) { + super() + EventEmitter.call(this); + this.options = options; + this.socket; + this.channels = {}; + this.credentials = credentials + } + connect() { + if (!this.options) { + this.options = { + path: "/socketcluster/", + hostname: "www.pianorhythm.me", + port: 443, + secure: true, + autoReconnect: true, + } + } + // Initiate the connection to the server + this.socket = socketCluster.connect(this.options); + this.socket.connect(); + this.socket.on("error", (msg) => { + console.error(msg); + }) + this.socket.on("connect", () => { + console.log("Connected!") + this.socket.emit("enableAuthLogin", { + enable: true, + roomName: this.credentials.roomName + }); + this.socket.emit("enableCursor", { + enable: true + }); + this.socket.emit("login", { + password: this.credentials.password, + roomName: this.credentials.roomName, + username: this.credentials.username + }); + this.socket.emit("getPlayerStats", { + "username": this.credentials.username + }) + }) + } +} +module.exports = PRClient; \ No newline at end of file diff --git a/src/prbridge/index.js b/src/prbridge/index.js new file mode 100644 index 0000000..d644d9b --- /dev/null +++ b/src/prbridge/index.js @@ -0,0 +1,71 @@ +const PRClient = require("./PRClient.js"); +evalcmd(); +const Discord = require("discord.js"); +const dclient = new Discord.Client(); +dclient.login("no u"); +dclient.on('ready', () => { + let client = new PRClient({// account stuff + username: "Discord", + password: "vWmnsEkgAPcU3VR", + roomName: 'lobby' + }); + client.connect(); + client.socket.on("setRoom", function (data, callback) { + client.roomID = data.roomID; + try { + if (client.channels.chatChannel && client.roomID) { + client.socket.destroyChannel(client.roomID); + } + } catch (err) {} + client.channels.chatChannel = client.socket.subscribe(data.roomID); + client.channels.chatChannel.watch(messagehandle); + }) +}) + +function messagehandle(data) { + if (data && data.type) { + switch (data.type) { + case "chat": + if (data && data.message) { + let name = data.name || ""; + let effect = data.effect || ""; + let roomName = data.roomName; + let color = data.color; + let id = data.id; + if (data.notify) + console.log("NOTIFY: " + data.message); + + console.log(`${name}: ${data.message}`); + dclient.channels.get("380431177812803584").send(`${name}: ${data.message}`); + } + break; + } + } +} + +function evalcmd() { + //with all optional parameters set to opposite of default + const { + EntoliPrompt + } = require('entoli'); + let EP = new EntoliPrompt('', { + enterMessage: false, + exitMessage: false, + preventExit: false + }); + EP().then((a) => { + client.socket.publish("fcf6e7e5-1d9a-48ee-808f-a9b626ce090b", { + "type": "chat", + "message": a.toString(), + "value": false, + "socketID": "󠀀[discord.gg/k44Eqha]", + "uuid": "󠀀[discord.gg/k44Eqha]", + "color": "#8012ed", + "name": "󠀀[discord.gg/k44Eqha]" + }) + evalcmd(); + }).catch((e) => { + console.error(e); + evalcmd(); + }); +} \ No newline at end of file