bugfix - stable

This commit is contained in:
djkato 2022-01-29 19:19:05 +01:00
parent f7ccc2ec05
commit a6cac307aa
2 changed files with 28 additions and 16 deletions

View file

@ -1,14 +1,9 @@
# Discord-Rich-Presence-For-Cinema-4D # Discord-Rich-Presence-For-Cinema-4D
How to use: A hacky way of allowing all your discord friends to know what your'e working on in Cinema 4D!
-ideally create batch file that runs `node ./src/Rich Presence for C4D.js` How it works:
>gets process info on c4D and takes windows name, extracts name from it
>hooks into discord api via npms `discord-rich-presence` and uses my custom app assets to show as cinema 4D, puts project name there
-put a shortcut to it in `shell:StartUp` folder to run on startup. enjoy~
Dj
-change `DRCSettings.json` to have your website porfolio
-Enjoy <3
known issues:
-crash on cinema 4D close

View file

@ -6,11 +6,15 @@ const { stdout, mainModule } = require('process')
let currentProject = "lorem Ipsum" let currentProject = "lorem Ipsum"
let pastProject = "." let pastProject = "."
//Command used to scan for C4D process
let cmd = 'tasklist /fi "imagename eq Cinema 4D.exe" /fo list /v' let cmd = 'tasklist /fi "imagename eq Cinema 4D.exe" /fo list /v'
//Loads DRC settings //Loads DRC settings
let DRCSettings = JSON.parse(fs.readFileSync("DRCSettings.json")) let DRCSettings = JSON.parse(fs.readFileSync("DRCSettings.json"))
let clientIsConnected = false
let currentClient let currentClient
function sleep(ms) { function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms)) return new Promise(resolve => setTimeout(resolve, ms))
} }
@ -46,6 +50,16 @@ function updateOpenProjectName(str) {
function setDRCProject() { function setDRCProject() {
//update current presence settings //update current presence settings
//reconnects the client if isnt connected
if (!clientIsConnected) {
currentClient = client("936296341250904065")
currentClient.on("error", (err) => {
console.log("err")
})
clientIsConnected = true
console.log("starting client")
currentProject = "0"
}
if (currentProject != pastProject) { if (currentProject != pastProject) {
currentClient.updatePresence({ currentClient.updatePresence({
state: `Porfolio: ${DRCSettings.portfolio_website}`, state: `Porfolio: ${DRCSettings.portfolio_website}`,
@ -54,28 +68,31 @@ function setDRCProject() {
largeImageKey: 'c4d', largeImageKey: 'c4d',
instance: true, instance: true,
}) })
console.log("updating client")
} }
pastProject = currentProject pastProject = currentProject
} }
//catches the error
async function main() { async function main() {
while (true) { while (true) {
updateOpenProjectName(await getCinemaProcessInfo()) updateOpenProjectName(await getCinemaProcessInfo())
//stops DRC when broken //stops DRC when broken
if (currentProject == false) { if (currentProject == false) {
if (currentClient) { if (clientIsConnected) {
await currentClient.disconnect() await currentClient.disconnect()
clientIsConnected = false
console.log("disconnecting client...")
} }
await sleep(20000) await sleep(DRCSettings.scan_refresh_rate * 10)
continue continue
} else { } else {
if (!currentClient) {
currentClient = client("936296341250904065")
}
setDRCProject() setDRCProject()
} }
await sleep(DRCSettings.scan_refresh_rate) await sleep(DRCSettings.scan_refresh_rate)
} }
} }