Compare commits

...

6 Commits

Author SHA1 Message Date
Lamp 97cbd989c5 limit vc name length 2022-07-18 21:00:12 -07:00
Lamp b45bc6c864 ge 2022-06-14 10:51:47 -07:00
Lamp 667e04be29 auto re-login 2022-06-13 11:54:54 -07:00
Lamp 20bdae485b delete clock
NOT EVEN AVG MORE THAN 1 REQUEST PER MIN YET THEY STILL FUCKING BANNING
2022-05-18 11:49:34 -07:00
Lamp f716bf9cc3 refactor to indicate errors in discord 2022-05-11 14:29:47 -07:00
Lamp cebe8dbd42 skip odd minutes 2022-05-11 14:10:39 -07:00
3 changed files with 57 additions and 44 deletions
+48 -35
View File
@@ -25,34 +25,60 @@ var status2icon = {
} }
var selfUserId; var selfUserId;
vrc.authenticationApi.getCurrentUser().then(res => { client.login(process.env.TOKEN).then(() => {
console.log("vrc login", res.data.username);
selfUserId = res.data.id;
exithook(cb => {
console.log("logging out");
client.destroy();
vrc.authenticationApi.logout().then(res => {
console.log(res.data);
cb();
});
});
client.login(process.env.TOKEN).then(() => {
console.log("discord login", client.user.tag); console.log("discord login", client.user.tag);
}).catch(error => console.error("discord login fail", error.stack)); }).catch(error => {
startClock(); console.log("discord login fail", error.stack)
}).catch(error => console.error("vrc login fail:", JSON.stringify(error.response.data))); });
client.once("ready", async () => { client.once("ready", async () => {
var vrcat = client.channels.resolve(VRCAT); var vrcat = client.channels.resolve(VRCAT);
if (!vrcat) return console.error("category not found"); if (!vrcat) return console.log("category not found");
for (let child of vrcat.children.values()) await child.delete(); for (let child of vrcat.children.values()) await child.delete();
exithook(async cb => {
console.log("discord cleanup");
for (let child of vrcat.children.values()) await child.delete();
client.destroy();
console.log("discord destroyed");
cb();
});
try {
var logindata = await vrc.authenticationApi.getCurrentUser().then(res => res.data);
} catch (error) {
console.log("vrc login fail:", JSON.stringify(error.response.data));
vrcat.createChannel("login failure", {type: "GUILD_VOICE"}).catch(()=>{});
}
if (!logindata) return;
console.log("vrc login", logindata.username);
selfUserId = logindata.id;
exithook(cb => {
console.log("vrc logout");
vrc.authenticationApi.logout().then(res => {
console.log("vrc", res.data);
cb();
});
});
do { do {
try { try {
await syncStat(); await syncStat();
} catch (error) { } catch (error) {
console.error(error.stack); console.log("syncStat", error.message);
if (error.response?.status == 401 /* && error.response.data.message == "\"Missing Credentials\"" /* todo? */) {
console.log(error.response.data);
try {
var logindata = await vrc.authenticationApi.getCurrentUser().then(res => res.data);
console.log("vrc relogin", logindata.username);
selfUserId = logindata.id;
} catch (error) {
console.log("relogin fail", error.message, logindata);
vrcat.createChannel("login failure", {type: "GUILD_VOICE"}).catch(()=>{});
await new Promise(r => setTimeout(r, 1000*60*60));
} }
await new Promise(r => setTimeout(r, 1000*60*5)) } else {
vrcat.createChannel(error.response?.status?.toString() || error.message, {type: "GUILD_VOICE"}).catch(()=>{});
}
}
await new Promise(r => setTimeout(r, 1000*60*5));
} while (true); } while (true);
}); });
@@ -61,11 +87,11 @@ async function syncStat() {
friendsOnline = friendsOnline.filter(x => x.location); friendsOnline = friendsOnline.filter(x => x.location);
var selfUser = await vrc.usersApi.getUser(selfUserId).then(res => res.data); var selfUser = await vrc.usersApi.getUser(selfUserId).then(res => res.data);
if (selfUser.state == "online") friendsOnline.unshift(selfUser); if (selfUser.state == "online") friendsOnline.unshift(selfUser);
console.debug(friendsOnline.map(m => m.displayName)); //console.debug(friendsOnline.map(m => m.displayName));
for (let fren of friendsOnline) { for (let fren of friendsOnline) {
try { try {
let vcnam = `${status2icon[fren.status]} ${fren.displayName}`; let vcnam = `${status2icon[fren.status]} ${fren.displayName}`.substring(0,100);
let subvcnam = `${SUBCH_PFX} ${await getWorldNameForId(fren.location.split(':')[0])}`; let subvcnam = `${SUBCH_PFX} ${await getWorldNameForId(fren.location.split(':')[0])}`.substring(0,100);
let vc = client.channels.resolve(VRCAT).children.find(vc => vc.vrcuid == fren.id); let vc = client.channels.resolve(VRCAT).children.find(vc => vc.vrcuid == fren.id);
if (vc) { if (vc) {
if (vc.name != vcnam) await vc.setName(vcnam); if (vc.name != vcnam) await vc.setName(vcnam);
@@ -76,7 +102,7 @@ async function syncStat() {
vc.vrcuid = fren.id; vc.vrcuid = fren.id;
} }
} catch(error) { } catch(error) {
console.error(`fren ${fren.username} brok:`, error); console.log(`fren ${fren.username} brok:`, error);
} }
} }
for (let vc of client.channels.resolve(VRCAT).children.values()) { for (let vc of client.channels.resolve(VRCAT).children.values()) {
@@ -98,16 +124,3 @@ async function getWorldNameForId(worldId) {
global.client = client; global.client = client;
global.vrc = vrc; global.vrc = vrc;
global.syncStat = syncStat; global.syncStat = syncStat;
function startClock() {
(function clock() {
var d = new Date();
vrc.usersApi.updateUser(selfUserId, {
statusDescription: d.toLocaleTimeString([], {timeStyle: 'short'})
});
d.setSeconds(60);
setTimeout(clock, d - Date.now());
})();
}
+7 -7
View File
@@ -8,7 +8,7 @@
"async-exit-hook": "^2.0.1", "async-exit-hook": "^2.0.1",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"vrchat": "^1.6.9" "vrchat": "^1.7.1"
} }
}, },
"node_modules/@discordjs/builders": { "node_modules/@discordjs/builders": {
@@ -328,9 +328,9 @@
} }
}, },
"node_modules/vrchat": { "node_modules/vrchat": {
"version": "1.6.9", "version": "1.7.1",
"resolved": "https://registry.npmjs.org/vrchat/-/vrchat-1.6.9.tgz", "resolved": "https://registry.npmjs.org/vrchat/-/vrchat-1.7.1.tgz",
"integrity": "sha512-eV3EzHtObBGIzb5tEOP6vqeZsGIlMLXybO2CwpkSDvGra2ORIoh5hYnUq9JeMnAsmwF/xMpPHrb5yg5ZPDhAoA==", "integrity": "sha512-RuJkqEsouqnUDQBmZCwLgXQSSijdR3yaaew8ajM/j+28NAEXHR3uMyrnWPmWDZUPTV9zASlSTpabft1yq84z9Q==",
"dependencies": { "dependencies": {
"@types/tough-cookie": "^4.0.1", "@types/tough-cookie": "^4.0.1",
"axios": "^0.21.4", "axios": "^0.21.4",
@@ -601,9 +601,9 @@
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
}, },
"vrchat": { "vrchat": {
"version": "1.6.9", "version": "1.7.1",
"resolved": "https://registry.npmjs.org/vrchat/-/vrchat-1.6.9.tgz", "resolved": "https://registry.npmjs.org/vrchat/-/vrchat-1.7.1.tgz",
"integrity": "sha512-eV3EzHtObBGIzb5tEOP6vqeZsGIlMLXybO2CwpkSDvGra2ORIoh5hYnUq9JeMnAsmwF/xMpPHrb5yg5ZPDhAoA==", "integrity": "sha512-RuJkqEsouqnUDQBmZCwLgXQSSijdR3yaaew8ajM/j+28NAEXHR3uMyrnWPmWDZUPTV9zASlSTpabft1yq84z9Q==",
"requires": { "requires": {
"@types/tough-cookie": "^4.0.1", "@types/tough-cookie": "^4.0.1",
"axios": "^0.21.4", "axios": "^0.21.4",
+1 -1
View File
@@ -3,6 +3,6 @@
"async-exit-hook": "^2.0.1", "async-exit-hook": "^2.0.1",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^16.0.0", "dotenv": "^16.0.0",
"vrchat": "^1.6.9" "vrchat": "^1.7.1"
} }
} }