feat: avatar moment

This commit is contained in:
Saahil 2025-04-08 20:08:25 -04:00
parent cb0a64a6ae
commit f87a7a851f
No known key found for this signature in database
GPG key ID: 8A8B64515254CFC6
5 changed files with 136 additions and 3 deletions

1
.gitignore vendored
View file

@ -150,3 +150,4 @@ slack-users*
assignments.json
memdb.json
src/commands/uttered-oyster-ledge-lumber-velvet-using-coffee-injury-inline-ahead-dwelt-elope.ts
t6.ts

View file

@ -10,6 +10,7 @@
"dependencies": {
"@js-temporal/polyfill": "^0.4.4",
"@keyv/sqlite": "^4.0.1",
"@napi-rs/canvas": "^0.1.69",
"@sentry/node": "^8.41.0",
"@sentry/profiling-node": "^8.41.0",
"@slack/bolt": "^3.21.2",
@ -30,13 +31,13 @@
"node-memwatch-new": "0.0.1",
"octokit": "^4.0.2",
"openai": "latest",
"pidusage": "latest",
"rss": "^1.2.2",
"simple-json-db": "^2.0.0",
"smee-client": "^2.0.3",
"socket.io": "^4.8.1",
"stegcloak": "^1.1.1",
"ws": "^8.18.0",
"pidusage": "latest"
"ws": "^8.18.0"
},
"optionalDependencies": {},
"devDependencies": {

View file

@ -0,0 +1,57 @@
import { createCanvas, loadImage } from "@napi-rs/canvas"
import { cron } from "./juice"
import { Cron } from "croner"
// import { writeFileSync } from "fs";
// const { createCanvas, loadImage } = require('@napi-rs/canvas')
export function sendImage(imageData) {
fetch('https://alaska-avatar.vercel.app/api/upload', {
method: 'POST',
headers: {
'accept': 'application/json, text/plain, */*',
'accept-language': 'en-US,en;q=0.9',
'content-type': 'image/png',
'origin': 'https://alaska-avatar.vercel.app',
'priority': 'u=1, i',
'referer': 'https://alaska-avatar.vercel.app/',
'sec-ch-ua': '"Chromium";v="133", "Not(A:Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
'cookie': 'token='+process.env.ALASKAS_AVATAR_KEY
},
body: imageData
}).then(d=>d.json()).then(console.log)
}
const canvas = createCanvas(300, 320)
const ctx = canvas.getContext('2d')
export async function idkRunAvatarThingy() {
const zeon = await loadImage("https://saahild.com/zeon/static/media/logo.496b486aab466e923154.png")
const avatar = await loadImage("https://alaska-avatar.vercel.app/api/avatar")
const scale = 0.5;
const imgWidth = zeon.width * scale;
const imgHeight = zeon.height * scale;
const margin = 9;
// Draw background image to fill the entire canvas
ctx.drawImage(avatar, 0, 0, 300, 320);
// Draw image in top-right
const x = 300 - imgWidth - margin;
const y = margin;
ctx.drawImage(zeon, x, y, imgWidth, imgHeight);
// Save to file
const buffer = canvas.toBuffer('image/png');
// const blob = canvas.t
// writeFileSync('output.png', buffer);
console.log(`Sending...`)
sendImage(buffer)
}
export function cronJobForAvatar() {
new Cron("0 */3 * * *", async () => {
await idkRunAvatarThingy()
})
}

View file

@ -19,6 +19,7 @@ import { setupSeverCron } from "./seven39feed";
import { cronJobForRPG } from "./rpgysws";
import { onLoadForLockIn } from "./lockinysws";
import { setupFlightlyCron } from "./flightly";
import { cronJobForAvatar } from "./alaskasavatar";
// import { onLoad } from "./lockinysws";
const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);
@ -279,7 +280,7 @@ export function setupOverallCron(app: ModifiedApp) {
cronJobForRPG(app);
onLoadForLockIn(app);
setupFlightlyCron(app);
cronJobForAvatar()
return {
// checkAirtableBoba,
cronWithCheckIn,

View file

@ -69,6 +69,72 @@
semver "^7.3.5"
tar "^6.1.11"
"@napi-rs/canvas-android-arm64@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.69.tgz#0ce738f90b3532d43505eebb650cb4763c24ea66"
integrity sha512-4icWTByY8zPvM9SelfQKf3I6kwXw0aI5drBOVrwfER5kjwXJd78FPSDSZkxDHjvIo9Q86ljl18Yr963ehA4sHQ==
"@napi-rs/canvas-darwin-arm64@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.69.tgz#826a2b45af433a4aea8c0e0edfe1ca1fcfd5b9e9"
integrity sha512-HOanhhYlHdukA+unjelT4Dg3ta7e820x87/AG2dKUMsUzH19jaeZs9bcYjzEy2vYi/dFWKz7cSv2yaIOudB8Yg==
"@napi-rs/canvas-darwin-x64@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.69.tgz#a78b3e8c44d6a93e36a8ef1676e96712c5ad11be"
integrity sha512-SIp7WfhxAPnSVK9bkFfJp+84rbATCIq9jMUzDwpCLhQ+v+OqtXe4pggX1oeV+62/HK6BT1t18qRmJfyqwJ9f3g==
"@napi-rs/canvas-linux-arm-gnueabihf@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.69.tgz#47369309e87e047335379bea628625b740c7ab2b"
integrity sha512-Ls+KujCp6TGpkuMVFvrlx+CxtL+casdkrprFjqIuOAnB30Mct6bCEr+I83Tu29s3nNq4EzIGjdmA3fFAZG/Dtw==
"@napi-rs/canvas-linux-arm64-gnu@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.69.tgz#1f23dd74a0f53db95309a58f989cf6be1bb6363e"
integrity sha512-m8VcGmeSBNRbHZBd1srvdM1aq/ScS2y8KqGqmCCEgJlytYK4jdULzAo2K/BPKE1v3xvn8oUPZDLI/NBJbJkEoA==
"@napi-rs/canvas-linux-arm64-musl@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.69.tgz#ed719b19acf60888ef62a40951b9c51891bd9fcf"
integrity sha512-a3xjNRIeK2m2ZORGv2moBvv3vbkaFZG1QKMeiEv/BKij+rkztuEhTJGMar+buICFgS0fLgphXXsKNkUSJb7eRQ==
"@napi-rs/canvas-linux-riscv64-gnu@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.69.tgz#444993e0b6fc52cb7cbc838e25df2d62b5fb17b0"
integrity sha512-pClUoJF5wdC9AvD0mc15G9JffL1Q85nuH1rLSQPRkGmGmQOtRjw5E9xNbanz7oFUiPbjH7xcAXUjVAcf7tdgPQ==
"@napi-rs/canvas-linux-x64-gnu@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.69.tgz#87afd2f8ba1b442b45429c03d5aa98eb9872772f"
integrity sha512-96X3bFAmzemfw84Ts6Jg/omL86uuynvK06MWGR/mp3JYNumY9RXofA14eF/kJIYelbYFWXcwpbcBR71lJ6G/YQ==
"@napi-rs/canvas-linux-x64-musl@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.69.tgz#4f743a8d649f61dc121f03b6f40dff2e5d318aac"
integrity sha512-2QTsEFO72Kwkj53W9hc5y1FAUvdGx0V+pjJB+9oQF6Ys9+y989GyPIl5wZDzeh8nIJW6koZZ1eFa8pD+pA5BFQ==
"@napi-rs/canvas-win32-x64-msvc@0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.69.tgz#7b63c1694c5ef11db9695f5917e3f6670562bc60"
integrity sha512-Q4YA8kVnKarApBVLu7F8icGlIfSll5Glswo5hY6gPS4Is2dCI8+ig9OeDM8RlwYevUIxKq8lZBypN8Q1iLAQ7w==
"@napi-rs/canvas@^0.1.69":
version "0.1.69"
resolved "https://registry.yarnpkg.com/@napi-rs/canvas/-/canvas-0.1.69.tgz#ac2e4113d0bd381568219d1ba22f0a8563d4c6b1"
integrity sha512-ydvNeJMRm+l3T14yCoUKqjYQiEdXDq1isznI93LEBGYssXKfSaLNLHOkeM4z9Fnw9Pkt2EKOCAtW9cS4b00Zcg==
optionalDependencies:
"@napi-rs/canvas-android-arm64" "0.1.69"
"@napi-rs/canvas-darwin-arm64" "0.1.69"
"@napi-rs/canvas-darwin-x64" "0.1.69"
"@napi-rs/canvas-linux-arm-gnueabihf" "0.1.69"
"@napi-rs/canvas-linux-arm64-gnu" "0.1.69"
"@napi-rs/canvas-linux-arm64-musl" "0.1.69"
"@napi-rs/canvas-linux-riscv64-gnu" "0.1.69"
"@napi-rs/canvas-linux-x64-gnu" "0.1.69"
"@napi-rs/canvas-linux-x64-musl" "0.1.69"
"@napi-rs/canvas-win32-x64-msvc" "0.1.69"
"@npmcli/fs@^1.0.0":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257"
@ -3779,6 +3845,13 @@ pg-types@^4.0.1:
postgres-interval "^3.0.0"
postgres-range "^1.1.1"
pidusage@latest:
version "4.0.0"
resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-4.0.0.tgz#be3895830c793eb18931b412bcf58ce4d40cbd7b"
integrity sha512-89hVJc5gq157puLYZaO3CH0qfGyDfbDG1KFCE4lCSwK0l1EuEbNa4pIJJXL93ltU5SsYia/DHJUgMY2qE4XRQg==
dependencies:
safe-buffer "^5.2.1"
point-in-polygon-hao@^1.1.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/point-in-polygon-hao/-/point-in-polygon-hao-1.2.3.tgz#e702b597e9015e0054441f01ca43aab2a2b78261"