Compare commits
4 Commits
f716bf9cc3
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 97cbd989c5 | |||
| b45bc6c864 | |||
| 667e04be29 | |||
| 20bdae485b |
@@ -28,12 +28,12 @@ var selfUserId;
|
|||||||
client.login(process.env.TOKEN).then(() => {
|
client.login(process.env.TOKEN).then(() => {
|
||||||
console.log("discord login", client.user.tag);
|
console.log("discord login", client.user.tag);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error("discord login fail", error.stack)
|
console.log("discord login fail", error.stack)
|
||||||
});
|
});
|
||||||
|
|
||||||
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 => {
|
exithook(async cb => {
|
||||||
console.log("discord cleanup");
|
console.log("discord cleanup");
|
||||||
@@ -45,8 +45,8 @@ client.once("ready", async () => {
|
|||||||
try {
|
try {
|
||||||
var logindata = await vrc.authenticationApi.getCurrentUser().then(res => res.data);
|
var logindata = await vrc.authenticationApi.getCurrentUser().then(res => res.data);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("vrc login fail:", JSON.stringify(error.response.data));
|
console.log("vrc login fail:", JSON.stringify(error.response.data));
|
||||||
await vrcat.createChannel("login failure", {type: "GUILD_VOICE"});
|
vrcat.createChannel("login failure", {type: "GUILD_VOICE"}).catch(()=>{});
|
||||||
}
|
}
|
||||||
if (!logindata) return;
|
if (!logindata) return;
|
||||||
console.log("vrc login", logindata.username);
|
console.log("vrc login", logindata.username);
|
||||||
@@ -58,13 +58,25 @@ client.once("ready", async () => {
|
|||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
startClock();
|
|
||||||
do {
|
do {
|
||||||
try {
|
try {
|
||||||
await syncStat();
|
await syncStat();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error.stack);
|
console.log("syncStat", error.message);
|
||||||
vrcat.createChannel("error occured", {type: "GUILD_VOICE"}).catch(()=>{});
|
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));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vrcat.createChannel(error.response?.status?.toString() || error.message, {type: "GUILD_VOICE"}).catch(()=>{});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
await new Promise(r => setTimeout(r, 1000*60*5));
|
await new Promise(r => setTimeout(r, 1000*60*5));
|
||||||
} while (true);
|
} while (true);
|
||||||
@@ -75,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);
|
||||||
@@ -90,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()) {
|
||||||
@@ -112,17 +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();
|
|
||||||
if (!(d.getMinutes() % 2)) // skip odd minutes to keep average request rate under 1 per minute
|
|
||||||
vrc.usersApi.updateUser(selfUserId, {
|
|
||||||
statusDescription: d.toLocaleTimeString([], {timeStyle: 'short'})
|
|
||||||
}).catch(error => console.error("clock", error.message));
|
|
||||||
d.setSeconds(60);
|
|
||||||
setTimeout(clock, d - Date.now());
|
|
||||||
})();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user