From 7f42a27d8f5dcb9ca87bca00c02098fd0cd975a6 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 16 Oct 2024 06:53:30 +0100 Subject: [PATCH] add new player tracking logging and add discord link to the footer --- .gitea/kubernetes/backend/sealed-secret.yaml | 3 ++- bun.lockb | Bin 319136 -> 321016 bytes projects/backend/package.json | 3 ++- projects/backend/src/common/config.ts | 1 + .../backend/src/service/player.service.ts | 18 ++++++++++++++++++ projects/website/src/components/footer.tsx | 5 +++++ 6 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.gitea/kubernetes/backend/sealed-secret.yaml b/.gitea/kubernetes/backend/sealed-secret.yaml index 4060137..3b51b19 100644 --- a/.gitea/kubernetes/backend/sealed-secret.yaml +++ b/.gitea/kubernetes/backend/sealed-secret.yaml @@ -7,7 +7,8 @@ metadata: namespace: public-services spec: encryptedData: - MONGO_URI: AgCUTvItz+Z7ZwWJZuNmdYtNmXPLjxf+48wydwwewJ7AZshoVQSfTNTU+Cu09p6NC9EXCOwsPYQuAqor81puHh/LbYDhdFaGDXWXGg6R6ELPQkU4hDTvIiNyTdeNhn5tFNMdsqwkrsdxjrfMsH+wSHcxJpH1dTmhkEytdhElQmTVJxITtvQlxljR2i9vV87TqYp2ebaBqcj3bGX/pfGLqImOPFJMw8TZ8N1jOxEtLOS9RJJL2YnJP4WH4OQhC+FIb1gQ8N7SI2CMj5Mqt8sdxrGnPBznUGJDEED2Vv7uqRTt/4Kysfv9DN1FpyifiWjGx61tLjS9WfsBoF12JiUFEcpBhBsWHhPjBeyWd6N9LWflDCB47eTLQt/HbarRnjtFpD04jrhv7XXF8YzOtjQDhVqhRDUdybt7LjN4VGw8P4mXf7JinwV4G49orsb561yas5xSTtZgL0t0uI0OTH+AYsiyB8Q9jWlJmdKTCM0gFU19uV+fPKC6UWN9gHXX9p5KK7ZX10I2UnH3knqa/OCGFj96C6RGN4cQlErnhjCrmlyfdcFiET6vgIaYnCbv1IxwpzlooqtWfmXqpmFfshfPWPdGuEqGOBaPmFYNwXaXVKsigv8gKIbWTl+ZhEnAN51wDYVRGT36fh8KM98I1ZcaRJKYJcz8I7+MnmEUDG97boWDe0wi6dY+INnQErsxcJ9W37d3BmEB0o0PS0yKA4lJXXWByS6T8AUpUidHCgufglQIuDXo1nBqVPoSOQg0OAq/kn4zUvfbw2+l0aZKrm0UILd5ZwAuAciJ/x7XtvcGfrYEJUpN/1DC5qL4J8s= + MONGO_URI: AgBZ4poRziaXwQLAspWQkgxQIKTYVq2w1fPBSbOBugso2kk5S6UpYo2MXD4F/ERDZM82p41yoNbwA5D8qPkAXlm7rdhiJI9PA410m/96eSFtE1UHNX0KXqrK/ay+ck9G2gjXv2osvrKphAgMy2k/PKbDDUE8p4iHVqDrzpTb5O1JvPg9Lcdv3kHZQL/wFWQDI1hzjL3W8ZkdeyNM81y20aG/is66rIcRukPPcg3rPfhLIcXmNlw6ows3SZqgN4QNWrUpT3pwaxySj4v1UbusH/HQGpdAcR0AjpTfIdG7o0+wBQPCeUMDMowvIyXQn/3rfeVG0mPSwEceJPhJ527YOcd91E693/c2QZKwG0slXnDSfKcrkiVeM7Mirjz6HHm5GQnFOUz7/i0Dttb8U56HGepqLJ8xcYFE5VWy/vzfmqD9bADHw9Ivk5lfXaKgrBWYQS7GNy8h9XISIszcQdkfz6cDhErl9iU6POYX2YnU1mxl3mSOPPM3efxJ/bm0PAZA8Ezyo6ww1P96QCbUCfZt/Ju1OYVvkwBGrJfo0bXx6x5yzd9Y22EKGoo3hTcoFbRzangVjf0/Vvu9EibC3UNEqeB/NwD5Xo8FvSbovr/wrmH12DUWVJYzKyWLPJObF8rIpn9OI1dsHk53jpfJyfToguy6ZQwsDU18OTqXPKyz86X/h2+jSUwuTGa+ktTIm78Ff8KrQ6sFSeqtskwdvLte5pclErdiRTPSCGxUu8jeqQM9q/ytsf2flWEXqLxoTuHWe9w+kylbimm3nQclViY3dX6ib7H6TYZkQE/GfFg9C+B5PfN6MaE83hSbQW8= + TRACKED_PLAYERS_WEBHOOK: AgAObYj3o8BC0xnSOSSKzXw6ChSaAfax/X04isNQNRppygIkACuli9u0ywvcG3q0uneiqzr2XLj1gKzF1nknufn3QnPsina6LcuGsvok7HbzjSy9MSHjq+/9O+S5GSYuY5rhQIlpXXzhmt5HJjbX2KSxoq6CMaJYKTzEL1mkjWHgXnECbFHlANwJFRfCI6lUblz6Kvb3yjKAR3HAqo7P4c5YoI3N7ZBW77y+vgZiM+n7Iwpq1liFLW68gg1t8kGY/y+OeUdTfcyf4svhPg4la+gUHCLwufxfSI3vQDZcndFGBA2MPJ/Eoc2itKoBMzA66w3CQPU8nAS5qBln51OASqCsvX6/Ipd0bFZyBrU7j8jPN1gpaWOIwMEhKT2t5nmLyzXN1aaYv8vl9hY6NpFN6T2QOBFsJ849KyoXdN6wfmCV5rPL9blSLSAuS0sy4LOvR5COgsZyCwUycRb8ZLq/gg+r97ySPYliQnuVbMcoce78+YyZGZn3+5T3tRQQ/E7qx7ZEgALKXGwL97LDuTXmuV8BNT0fwnqWqR5n0ZQvjo7FuxQAC4XufBAAdsxb429qflDfpZf5PYOoDUnTdmx2g7enmBb/WDa3Vxz4LTxollRf31HtkH9d02EVP0JQZ7u3fQkeEm3RKffeyNoIy/1K3+PdaVGre8PEuPRTF0RnLYQjyVka4sbJJwX1MvR/6uQX4iKF50dWfohcnt8z44chQKQQhQbzK6tVUIbfhN3XT4b1SWbbMxVXTxxtXjVVnE85yQ7XEo9f1RHbDi3WL2MMnFBnYxwjdHWcZhiHhppIVa+lsGCoO2i+HN4BEfwWP9oecgdLhSZ4OLC9Ps+z9QzF9jDEQuMML5Hpj7zZ template: metadata: creationTimestamp: null diff --git a/bun.lockb b/bun.lockb index e9e4d8d1b3e49f473a45bf4947bf03009a8fef69..ac67934204ad59234795e7b779f9d29f6f18d951 100755 GIT binary patch delta 7430 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 YV{ajv&YJ>U??{M$Q5c~S7feU~2}O|r6#xJL diff --git a/projects/backend/package.json b/projects/backend/package.json index 60f4748..8e628b1 100644 --- a/projects/backend/package.json +++ b/projects/backend/package.json @@ -13,8 +13,9 @@ "@elysiajs/swagger": "^1.1.3", "@ssr/common": "workspace:common", "@tqman/nice-logger": "^1.0.1", - "@vercel/og": "^0.6.3", "@typegoose/typegoose": "^12.8.0", + "@vercel/og": "^0.6.3", + "discord-webhook-node": "^1.1.8", "elysia": "latest", "elysia-autoroutes": "^0.5.0", "elysia-decorators": "^1.0.2", diff --git a/projects/backend/src/common/config.ts b/projects/backend/src/common/config.ts index 3d6f845..7077c4a 100644 --- a/projects/backend/src/common/config.ts +++ b/projects/backend/src/common/config.ts @@ -1,4 +1,5 @@ export const Config = { mongoUri: process.env.MONGO_URI, apiUrl: process.env.API_URL || "https://ssr.fascinated.cc/api", + trackedPlayerWebhook: process.env.TRACKED_PLAYERS_WEBHOOK, }; diff --git a/projects/backend/src/service/player.service.ts b/projects/backend/src/service/player.service.ts index 35537a0..f0f04db 100644 --- a/projects/backend/src/service/player.service.ts +++ b/projects/backend/src/service/player.service.ts @@ -5,6 +5,10 @@ import { scoresaberService } from "@ssr/common/service/impl/scoresaber"; import ScoreSaberPlayerToken from "@ssr/common/types/token/scoresaber/score-saber-player-token"; import { InternalServerError } from "../error/internal-server-error"; import ScoreSaberPlayerScoreToken from "@ssr/common/types/token/scoresaber/score-saber-player-score-token"; +// @ts-ignore +import { MessageBuilder, Webhook } from "discord-webhook-node"; +import { Config } from "../common/config"; +import { formatPp } from "@ssr/common/utils/number-utils"; export class PlayerService { /** @@ -34,6 +38,20 @@ export class PlayerService { player = (await PlayerModel.create({ _id: id })) as PlayerDocument; player.trackedSince = new Date(); await this.seedPlayerHistory(player, playerToken); + + const hook = new Webhook({ + url: Config.trackedPlayerWebhook, + }); + hook.setUsername("Player Tracker"); + const embed = new MessageBuilder(); + embed.setTitle("New Player Tracked"); + embed.addField("Username", playerToken.name, true); + embed.addField("ID", playerToken.id, true); + embed.addField("PP", formatPp(playerToken.pp) + "pp", true); + embed.setDescription(`https://ssr.fascinated.cc/player/${playerToken.id}`); + embed.setThumbnail(playerToken.profilePicture); + embed.setColor("#00ff00"); + await hook.send(embed); } catch (err) { const message = `Failed to create player document for "${id}"`; console.log(message, err); diff --git a/projects/website/src/components/footer.tsx b/projects/website/src/components/footer.tsx index b21b397..140edc1 100644 --- a/projects/website/src/components/footer.tsx +++ b/projects/website/src/components/footer.tsx @@ -22,6 +22,11 @@ const items: NavbarItem[] = [ link: "https://x.com/ssr_reloaded", openInNewTab: true, }, + { + name: "Discord", + link: "https://discord.gg/kmNfWGA4A8", + openInNewTab: true, + }, ]; export default function Footer() {