support logs for manual color changes
it writes to our discord server, owo!
This commit is contained in:
parent
3f2b4df8f3
commit
4fa07de299
2 changed files with 80 additions and 1 deletions
|
@ -10,6 +10,7 @@ const {
|
|||
getPoseFromPetData,
|
||||
getEmotion,
|
||||
getGenderPresentation,
|
||||
logToDiscord,
|
||||
} = require("./util");
|
||||
|
||||
const typeDefs = gql`
|
||||
|
@ -616,12 +617,14 @@ const resolvers = {
|
|||
setManualSpecialColor: async (
|
||||
_,
|
||||
{ itemId, colorId, supportSecret },
|
||||
{ db }
|
||||
{ itemLoader, itemTranslationLoader, colorTranslationLoader, db }
|
||||
) => {
|
||||
if (supportSecret !== process.env["SUPPORT_SECRET"]) {
|
||||
throw new Error(`Support secret is incorrect. Try setting up again?`);
|
||||
}
|
||||
|
||||
const item = await itemLoader.load(itemId);
|
||||
|
||||
const [
|
||||
result,
|
||||
] = await db.execute(
|
||||
|
@ -635,6 +638,55 @@ const resolvers = {
|
|||
);
|
||||
}
|
||||
|
||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||
try {
|
||||
const [
|
||||
itemTranslation,
|
||||
oldColorTranslation,
|
||||
newColorTranslation,
|
||||
] = await Promise.all([
|
||||
itemTranslationLoader.load(itemId),
|
||||
item.manualSpecialColorId
|
||||
? colorTranslationLoader.load(item.manualSpecialColorId)
|
||||
: Promise.resolve(null),
|
||||
colorId
|
||||
? colorTranslationLoader.load(colorId)
|
||||
: Promise.resolve(null),
|
||||
]);
|
||||
|
||||
const oldColorName = oldColorTranslation
|
||||
? capitalize(oldColorTranslation.name)
|
||||
: "Auto-detect";
|
||||
const newColorName = newColorTranslation
|
||||
? capitalize(newColorTranslation.name)
|
||||
: "Auto-detect";
|
||||
await logToDiscord({
|
||||
embeds: [
|
||||
{
|
||||
title: `🛠 ${itemTranslation.name}`,
|
||||
thumbnail: {
|
||||
url: item.thumbnailUrl,
|
||||
height: 80,
|
||||
width: 80,
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: "Special color",
|
||||
value: `${oldColorName} → **${newColorName}**`,
|
||||
},
|
||||
],
|
||||
timestamp: new Date().toISOString(),
|
||||
url: `https://impress.openneo.net/items/${item.id}`,
|
||||
},
|
||||
],
|
||||
});
|
||||
} catch (e) {
|
||||
console.error("Error sending Discord support log", e);
|
||||
}
|
||||
} else {
|
||||
console.warn("No Discord support webhook provided, skipping");
|
||||
}
|
||||
|
||||
return { id: itemId };
|
||||
},
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
const beeline = require("honeycomb-beeline");
|
||||
const fetch = require("node-fetch");
|
||||
|
||||
function capitalize(str) {
|
||||
return str[0].toUpperCase() + str.slice(1);
|
||||
}
|
||||
|
@ -82,6 +85,29 @@ function getPoseFromPetData(petMetaData, petCustomData) {
|
|||
}
|
||||
}
|
||||
|
||||
async function logToDiscord(body) {
|
||||
const span = beeline.startSpan({ name: "logToDiscord" });
|
||||
|
||||
try {
|
||||
const res = await fetch(process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"], {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
const resText = await res.text();
|
||||
throw new Error(
|
||||
`Discord returned ${res.status} ${res.statusText}: ` + `${resText}`
|
||||
);
|
||||
}
|
||||
} finally {
|
||||
beeline.finishSpan(span);
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeRow(row) {
|
||||
const normalizedRow = {};
|
||||
for (let [key, value] of Object.entries(row)) {
|
||||
|
@ -100,5 +126,6 @@ module.exports = {
|
|||
getGenderPresentation,
|
||||
getPoseFromPetState,
|
||||
getPoseFromPetData,
|
||||
logToDiscord,
|
||||
normalizeRow,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue