From b93fc499269425d461f11b2fb27a092334439b87 Mon Sep 17 00:00:00 2001 From: Renovate Date: Tue, 29 Oct 2024 19:56:51 -0700 Subject: [PATCH 1/5] Update dependency @slack/bolt to v4 --- bun.lockb | Bin 98401 -> 71212 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 8645e16810d0129f42544bef74a516dee14212c2..fdde9d807dd40918000f155c770d7df710a1009a 100755 GIT binary patch delta 14888 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 Date: Sun, 16 Feb 2025 13:03:40 +0000 Subject: [PATCH 2/5] idk what changed, i just need to commit so i can start proper commits --- bun.lockb | Bin 98401 -> 100630 bytes index.ts | 158 ++++++++++++++++++++++++++++++++++++++++++--------- package.json | 2 + 3 files changed, 134 insertions(+), 26 deletions(-) diff --git a/bun.lockb b/bun.lockb index 8645e16810d0129f42544bef74a516dee14212c2..0b0866a4b08201dc26c41bf32eb82627cd3563f7 100755 GIT binary patch delta 20064 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 delta 18868 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 CXLL9K diff --git a/index.ts b/index.ts index e771046..bf691f3 100644 --- a/index.ts +++ b/index.ts @@ -6,6 +6,7 @@ import "dotenv/config"; import bcrypt from "bcrypt"; import type { StaticSelectAction } from "@slack/bolt"; import { inspect } from "node:util"; +import { scheduleJob } from "node-schedule"; const sql = postgres({ host: '/var/run/postgresql', @@ -162,22 +163,30 @@ async function getTemporaryToken(): Promise { return data.access_token; } -async function getAccessToken(slack_id: string): Promise { +async function getAccessToken(slack_id: string): Promise { const user = await sql`SELECT * FROM links WHERE slack_id = ${slack_id}`; if (!user.length) return null - const data = await fetch("https://osu.ppy.sh/oauth/token", { - method: "POST", - headers: { - "Content-Type": "application/x-www-form-urlencoded" - }, - body: `client_id=33126&client_secret=${encodeURIComponent(process.env.CLIENT_SECRET!)}&grant_type=refresh_token&refresh_token=${user[0].refresh_token}&scope=public` - }).then(res => res.json()); - await sql`UPDATE links SET refresh_token = ${data.refresh_token} WHERE slack_id = ${slack_id}`; + try { + const data = await fetch("https://osu.ppy.sh/oauth/token", { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + body: `client_id=33126&client_secret=${encodeURIComponent(process.env.CLIENT_SECRET!)}&grant_type=refresh_token&refresh_token=${user[0].refresh_token}&scope=public` + }).then(res => res.json()); - return data.access_token; + console.log(data) + + await sql`UPDATE links SET refresh_token = ${data.refresh_token} WHERE slack_id = ${slack_id}`; + + return data.access_token; + } catch (err) { + console.error(err) + return null + } } async function sendGET(path: string, token?: string): Promise { @@ -480,17 +489,22 @@ app.command('/osu-profile', async (ctx) => { app.command('/osu-leaderboard', async (ctx) => { await ctx.ack(); - const cached = splitArray(cache, 10)[0].sort((a, b) => { + const cached = splitArray(cache.sort((a, b) => { return b.score.osu - a.score.osu - }); + }), 10); const users = []; for (let i in cached) { - const cachedU = cached[i]; - const slackProfile = (await ctx.client.users.info({ user: cachedU.slackId })).user!; + try { + const cachedU = cached[i]; + const slackProfile = (await ctx.client.users.info({ user: cachedU.slackId })).user!; - users.push(`${parseInt(i) + 1}. / - ${cachedU.score.osu.toLocaleString()}`) + users.push(`${users.length + 1}. / - ${cachedU.score.osu.toLocaleString()}`) + } catch (e) { + console.error(e) + continue; + } } ctx.respond({ @@ -590,17 +604,22 @@ app.action(/change-leaderboard\|.+/, async (ctx) => { const selected = action.selected_option.value; - const cached = splitArray(cache, 10)[0].sort((a, b) => { + const cached = splitArray(cache.sort((a, b) => { return b.score[selected] - a.score[selected] - }); + }), 10)[0]; const users = []; for (let i in cached) { - const cachedU = cached[i]; - const slackProfile = (await ctx.client.users.info({ user: cachedU.slackId })).user!; + try { + const cachedU = cached[i]; + const slackProfile = (await ctx.client.users.info({ user: cachedU.slackId })).user!; - users.push(`${parseInt(i) + 1}. / - ${cachedU.score[selected].toLocaleString()}`) + users.push(`${users.length + 1}. / - ${cachedU.score[selected].toLocaleString()}`) + } catch (e) { + console.error(e) + continue; + } } ctx.respond({ @@ -1090,12 +1109,99 @@ receiver.router.get('*', (req, res) => { res.redirect(`https://osu.ppy.sh${req.path}`) }) - ; (async () => { - await app.start(41691); +enum Mods { + EZ = "Easy", + NF = "No Fail", + HT = "Half Time", + HR = "Hard Rock", + SD = "Sudden Death", + PF = "Perfect", + DT = "Double Time", + NC = "Nightcore", + HD = "Hidden", + FI = "Fade In", + FL = "Flashlight", + RL = "Relax", + AP = "Autopilot", + SO = "Spun Out", + "1K" = "One Key", + "2K" = "Two Keys", + "3K" = "Three Keys", + "4K" = "Four Keys", + "5K" = "Five Keys", + "6K" = "Six Keys", + "7K" = "Seven Keys", + "8K" = "Eight Keys", + "9K" = "Nine Keys", + "10K" = "Ten Keys" +} - console.log('⚡️ Bolt app is running!'); +async function debugDailyChallenge() { + // Daily Challenge!! - cacheStuff(); + const tohken = await getAccessToken("U06TBP41C3E"); - setInterval(cacheStuff, 60 * 1000) // Cache every minute. Ratelimit is 1200 req/m anyways. - })(); + const rooms: any[] = await fetch(`https://osu.ppy.sh/api/v2/rooms`, { + headers: { + 'Authorization': `Bearer ${tohken}`, + 'X-Api-Version': '20240529' + } + }).then(res => res.json()); + + const dailyChallenge = rooms.find(room => room.host.id == 3 && room.active && room.category == "daily_challenge"); + + const currentSong = dailyChallenge.current_playlist_item + + const ruleset = [":osu-standard: osu!standard", ":osu-taiko: osu!taiko", ":osu-catch: osu!catch", ":osu-mania: osu!mania"][currentSong.ruleset_id] + + return app.client.chat.postMessage({ + channel: "C165V7XT9", + text: "A new daily challenge has started!", + "blocks": [ + { + "type": "header", + text: { + text: ruleset.split(' ').shift() + " A new daily challenge has started!", + emoji: true, + type: "plain_text" + } + }, + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ` + +*Ruleset:* ${ruleset} +*Required mods:* ${currentSong.required_mods.length === 0 ? "None" : currentSong.required_mods.map((mod: any) => + // @ts-ignore I HATE THIS + Mods[mod.acronym] || mod.acronym + ).join(', ')}` + }, + "accessory": { + "type": "image", + "image_url": dailyChallenge.host.avatar_url, + "alt_text": `${dailyChallenge.host.username}'s osu profile picture` + } + } + ], + unfurl_links: true + }) +} + +; (async () => { + await app.start(41691); + + console.log('⚡️ Bolt app is running!'); + + cacheStuff(); + + setInterval(cacheStuff, 60 * 1000) // Cache every minute. Ratelimit is 1200 req/m anyways. + + scheduleJob('30 5 0 * * *', debugDailyChallenge) +})(); diff --git a/package.json b/package.json index 768b291..ceec3e2 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,10 @@ "dependencies": { "@slack/bolt": "^3.19.0", "@types/bcrypt": "^5.0.2", + "@types/node-schedule": "^2.1.7", "bcrypt": "^5.1.1", "dotenv": "^16.4.5", + "node-schedule": "^2.1.1", "postgres": "^3.4.4" } } \ No newline at end of file From 365b6bd38156be1ae45ce66c34601d4cc76d2aea Mon Sep 17 00:00:00 2001 From: DaInfLoop Date: Mon, 17 Feb 2025 21:20:02 +0000 Subject: [PATCH 3/5] AAAAAAAAAAAAAAAAAAAAAAAAAAAA REPLAYS --- .gitignore | 2 + bun.lockb | Bin 100630 -> 105667 bytes index.ts | 294 ++++++++++++++++++++++++++++++++++++++++++++++----- package.json | 5 +- 4 files changed, 273 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 9b1ee42..168cbee 100644 --- a/.gitignore +++ b/.gitignore @@ -173,3 +173,5 @@ dist # Finder (MacOS) folder config .DS_Store + +replay-*.osr \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 0b0866a4b08201dc26c41bf32eb82627cd3563f7..3565769780558b1cb98d78429f8ced7097a8ee16 100755 GIT binary patch delta 22476 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 diff --git a/index.ts b/index.ts index bf691f3..d4b95d8 100644 --- a/index.ts +++ b/index.ts @@ -8,6 +8,13 @@ import type { StaticSelectAction } from "@slack/bolt"; import { inspect } from "node:util"; import { scheduleJob } from "node-schedule"; +// @ts-expect-error No typings :))))))))))) +import osr from "node-osr"; +import { Client, Events } from "ordr.js"; + +import io from "socket.io-client"; +import fs from "fs"; + const sql = postgres({ host: '/var/run/postgresql', database: 'haroon_osu', @@ -25,6 +32,8 @@ const app = new App({ } }); +const ordr = new Client(process.env.ORDR_TOKEN!); + const states = new Map(); app.command("/osu-link", async (ctx) => { @@ -168,7 +177,6 @@ async function getAccessToken(slack_id: string): Promise { if (!user.length) return null - try { const data = await fetch("https://osu.ppy.sh/oauth/token", { method: "POST", @@ -178,8 +186,6 @@ async function getAccessToken(slack_id: string): Promise { body: `client_id=33126&client_secret=${encodeURIComponent(process.env.CLIENT_SECRET!)}&grant_type=refresh_token&refresh_token=${user[0].refresh_token}&scope=public` }).then(res => res.json()); - console.log(data) - await sql`UPDATE links SET refresh_token = ${data.refresh_token} WHERE slack_id = ${slack_id}`; return data.access_token; @@ -211,20 +217,26 @@ function splitArray(arr: T[], maxElements: number): T[][] { } /// GENERATED /// -const cache: { - username: string, - id: number, - slackId: string, +type CacheUser = { + username: string; + id: number; + slackId: string; score: { - osu: number, - taiko: number - fruits: number, - mania: number - } -}[] = [] + osu: number; + taiko: number; + fruits: number; + mania: number; + }; +} + +const cache: CacheUser[] = [] const multiplayerRoundCache: any[] = []; +const sentWarningDM = { + ref: false +} + async function cacheStuff(): Promise { const token = await getTemporaryToken(); @@ -273,7 +285,49 @@ async function cacheStuff(): Promise { const tohken = await getAccessToken("U06TBP41C3E") as string; - if (!tohken) return; + if (!tohken) { + const verifCode = `OSULEADERBOARD-U06TBP41C3E-${Date.now()}`; + + states.set('U06TBP41C3E', verifCode); + + const encodedCode = await bcrypt.hash(verifCode, 10); + + await app.client.chat.postMessage({ + channel: "U06TBP41C3E", + text: "uh oh, your token seems to have expired!! multiplayer round fetching + daily challenges are disabled.", + blocks: [ + { + type: 'section', + text: { + type: "mrkdwn", + text: `uh oh, your token seems to have expired!! multiplayer round fetching + daily challenges are disabled.` + } + }, + { + type: 'section', + text: { + type: "mrkdwn", + text: `Please re-authenticate to generate it by clicking the Reauthenticate button.` + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Reauthenticate", + "emoji": true + }, + "value": "link", + "url": `https://osu.ppy.sh/oauth/authorize?client_id=33126&redirect_uri=https://osu.haroon.hackclub.app/osu/callback&response_type=code&state=${encodeURIComponent("U06TBP41C3E:" + encodedCode)}&scope=public`, + "action_id": "link" + } + }, + ] + }) + + sentWarningDM.ref = true; + + return + }; const rooms = await fetch(`https://osu.ppy.sh/api/v2/rooms?category=realtime`, { headers: { @@ -489,16 +543,17 @@ app.command('/osu-profile', async (ctx) => { app.command('/osu-leaderboard', async (ctx) => { await ctx.ack(); - const cached = splitArray(cache.sort((a, b) => { + const cached = splitArray(cache.sort((a, b) => { return b.score.osu - a.score.osu }), 10); const users = []; - for (let i in cached) { + for (let i in cached[0]) { try { - const cachedU = cached[i]; - const slackProfile = (await ctx.client.users.info({ user: cachedU.slackId })).user!; + const cachedU = cached[0][i]; + const slackInfo = await ctx.client.users.info({ user: cachedU.slackId }) + const slackProfile = slackInfo.user!; users.push(`${users.length + 1}. / - ${cachedU.score.osu.toLocaleString()}`) } catch (e) { @@ -602,7 +657,7 @@ app.action(/change-leaderboard\|.+/, async (ctx) => { return ctx.respond({ replace_original: false, response_type: "ephemeral", text: `This leaderboard was initialised by <@${userId}>. Only they can manage it.` }) } - const selected = action.selected_option.value; + const selected = action.selected_option.value as "osu" | "taiko" | "fruits" | "mania"; const cached = splitArray(cache.sort((a, b) => { return b.score[selected] - a.score[selected] @@ -878,6 +933,41 @@ app.command('/osu-search', async (ctx) => { }); } + const accessToken = await getAccessToken(ctx.context.userId!); + + if (!accessToken) { + const verifCode = `OSULEADERBOARD-${ctx.context.userId}-${Date.now()}`; + + states.set(ctx.context.userId, verifCode); + + const encodedCode = await bcrypt.hash(verifCode, 10); + + return ctx.respond({ + response_type: 'ephemeral', + text: `Hey <@${ctx.context.userId}>, your token has expired. Please re-authenticate to generate it by clicking the Reauthenticate button.`, + blocks: [ + { + type: 'section', + text: { + type: 'mrkdwn', + text: `Hey <@${ctx.context.userId}>, your token has expired. Please re-authenticate to generate it by clicking the \`Reauthenticate\` button.` + }, + "accessory": { + "type": "button", + "text": { + "type": "plain_text", + "text": "Reauthenticate", + "emoji": true + }, + "value": "link", + "url": `https://osu.ppy.sh/oauth/authorize?client_id=33126&redirect_uri=https://osu.haroon.hackclub.app/osu/callback&response_type=code&state=${encodeURIComponent(ctx.context.userId + ":" + encodedCode)}&scope=public`, + "action_id": "link" + } + }, + ] + }); + } + ctx.client.views.open({ trigger_id: ctx.payload.trigger_id, view: { @@ -1076,7 +1166,7 @@ app.view("search", async (ctx) => { const set = data.beatmapsets[0]; - return ctx.client.chat.postMessage({ + ctx.client.chat.postMessage({ channel: ctx.view.private_metadata, "blocks": [ { @@ -1194,14 +1284,164 @@ async function debugDailyChallenge() { }) } -; (async () => { - await app.start(41691); +type QueueJob = { + md5: string, + playerName: string, + ts: string, + userId: string +} - console.log('⚡️ Bolt app is running!'); +const queue: QueueJob[] = [] +// key is renderID +const waiting = new Map() - cacheStuff(); +const processQueue = async () => { + if (queue.length > 0) { + const job = queue.shift()!; - setInterval(cacheStuff, 60 * 1000) // Cache every minute. Ratelimit is 1200 req/m anyways. + setTimeout(processQueue, 5000) - scheduleJob('30 5 0 * * *', debugDailyChallenge) -})(); + app.client.reactions.add({ + channel: "C165V7XT9", + name: "thinkspin", + timestamp: job.ts + }) + + const render = await ordr.sendRender({ + replay: `replay-${job.md5}.osr`, + skin: 'default', + username: job.playerName, + showDanserLogo: false, + resolution: '1280x720' + }) + + console.log(render) + + // @ts-ignore Error code 0 DOES exist: https://ordr.issou.best/docs/#section/Error-codes + if (render.errorCode !== 0) { + app.client.chat.postEphemeral({ + channel: "C165V7XT9", + user: job.userId, + text: `Hey: it looks like you posted a replay! Unfortunately, I couldn't generate a video of it: "${render.message}"` + }) + return + } + + waiting.set(render.renderID!, job); + } +}; + +const socket = io('https://apis.issou.best', { + path: '/ordr/ws', + autoConnect: false +}) + +socket.on('connect', () => { + console.log('Connected to ordr websocket!') +}) + +socket.on('disconnect', reason => { + if (reason == "io server disconnect") { + socket.connect() + } +}) + +socket.on('render_done_json', async (render) => { + const job = waiting.get(render.renderID!); + + if (!job) return; + + app.client.chat.postMessage({ + channel: 'C165V7XT9', + thread_ts: job.ts, + reply_broadcast: true, + text: `<${render.videoUrl}|replay-${job.md5}.mp4>`, + unfurl_media: true + }) + + app.client.reactions.remove({ + channel: "C165V7XT9", + name: "thinkspin", + timestamp: job.ts + }) + + waiting.delete(render.renderID!); +}) + +const addToQueue = (job: QueueJob) => { + queue.push(job); + if (queue.length === 1) { + processQueue(); + } +}; + +app.event("message", async (ctx) => { + if (ctx.event.channel != "C165V7XT9") return; + if (ctx.event.subtype != "file_share") return; + const ts = ctx.event.ts; + + const history = await ctx.client.conversations.history({ + channel: "C165V7XT9", + latest: ts, + limit: 1, + inclusive: true + }) + + if (!(history.messages && history.messages.length > 0)) { + return; + } + + const message = history.messages[0]; + + if (!message.files) return; + if (message.files.length === 0) return; + + const replay = message.files.find(file => file.name?.endsWith(".osr")); + + if (!replay) return; + + const replayData = await fetch(replay.url_private_download!, { + headers: { + 'Authorization': `Bearer ${process.env.SLACK_BOT_TOKEN}` + } + }).then(res => res.arrayBuffer()); + + const replayBuffer = Buffer.from(replayData); + + const _replay = await osr.read(replayBuffer); + + if (_replay.gameMode !== 0) { + ctx.client.chat.postEphemeral({ + channel: "C165V7XT9", + user: ctx.context.userId!, + text: "Hey: it looks like you posted a replay! Unfortunately, it's not an :osu-standard: osu!standard replay, and so I can't generate a video of it. Sorry!" + }) + return; + } + + const replayFile = fs.createWriteStream(`replay-${_replay.replayMD5}.osr`); + + replayFile.write(replayBuffer); + replayFile.end(); + + addToQueue({ + md5: _replay.replayMD5, + playerName: _replay.playerName, + ts: ts, + userId: ctx.context.userId! + }) +}) + + ; (async () => { + await app.start(41691); + + console.log('⚡️ Bolt app is running!'); + + socket.connect(); + + cacheStuff(); + + setInterval(cacheStuff, 60 * 1000) // Cache every minute. Ratelimit is 1200 req/m anyways. + + scheduleJob('30 5 0 * * *', debugDailyChallenge) + })(); diff --git a/package.json b/package.json index ceec3e2..908df1e 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,10 @@ "@types/node-schedule": "^2.1.7", "bcrypt": "^5.1.1", "dotenv": "^16.4.5", + "node-osr": "^1.2.1", "node-schedule": "^2.1.1", - "postgres": "^3.4.4" + "ordr.js": "^4.0.0", + "postgres": "^3.4.4", + "socket.io-client": "^4.8.1" } } \ No newline at end of file From 81491e7fba63fd0a5492ca5c8916e5998a70256b Mon Sep 17 00:00:00 2001 From: DaInfLoop Date: Sun, 9 Mar 2025 14:45:04 +0000 Subject: [PATCH 4/5] Change leaderboard to use PP instead of score credits to @srizan10 for idea --- index.ts | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/index.ts b/index.ts index d4b95d8..18363b4 100644 --- a/index.ts +++ b/index.ts @@ -267,10 +267,10 @@ async function cacheStuff(): Promise { id: user.id, slackId: osuUsers.find(v => v[0] == user.id)![1], score: { - osu: user.statistics_rulesets.osu?.total_score || 0, - taiko: user.statistics_rulesets.taiko?.total_score || 0, - fruits: user.statistics_rulesets.fruits?.total_score || 0, - mania: user.statistics_rulesets.mania?.total_score || 0, + osu: Math.floor(user.statistics_rulesets.osu?.pp) || 0, + taiko: Math.floor(user.statistics_rulesets.taiko?.pp) || 0, + fruits: Math.floor(user.statistics_rulesets.fruits?.pp) || 0, + mania: Math.floor(user.statistics_rulesets.mania?.pp) || 0, } }))) } @@ -1312,7 +1312,10 @@ const processQueue = async () => { skin: 'default', username: job.playerName, showDanserLogo: false, - resolution: '1280x720' + resolution: '1280x720', + introBGDim: 100, + inGameBGDim: 100, + breakBGDim: 100 }) console.log(render) @@ -1424,12 +1427,15 @@ app.event("message", async (ctx) => { replayFile.write(replayBuffer); replayFile.end(); - addToQueue({ - md5: _replay.replayMD5, - playerName: _replay.playerName, - ts: ts, - userId: ctx.context.userId! - }) + + replayFile.on('finish', () => { + addToQueue({ + md5: _replay.replayMD5, + playerName: _replay.playerName, + ts: ts, + userId: ctx.context.userId! + }) + }); }) ; (async () => { From 0eebc48ba98926e881fe328e89fe80e0bf108926 Mon Sep 17 00:00:00 2001 From: Renovate Date: Wed, 25 Jun 2025 10:10:46 +0000 Subject: [PATCH 5/5] Update dependency @slack/bolt to v4 --- bun.lockb | Bin 105667 -> 75682 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 3565769780558b1cb98d78429f8ced7097a8ee16..a8f06bf50c6c3bd1efaccecd6acab67f66822574 100755 GIT binary patch delta 16316 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
Zpc?U%2Ootj3*kvz$}x0PdR zEk3^;9khIL#~{&9H8YO(Rex3=XSy-NpeA>Z^ZU~6UQ1bH+*cYqJH2@sJ|aM~u5j?N zn(B2~Mdd477INgQ%ayn8&n3?j2*U@-=TG?BnJ%u-8L8ENJ}Tb5QMqeNP|?xP12TRo z_}G8RJne+B6JrmzDY;v&QS;oo{=$UdPg+|ZzTN%%6;f|4Y&dcR#4_?oPB3|GEmv~6 z_3S+MT%%fpqC?NJvbLI55=T25Umr8cE4b7a_F|WH&lQoU&95y^Jrw*{cZbuw#wBhV z7DfkNn;GW}9b!6mi<_LSdGfZ3h8N`SeBeKYwamuSFYCI={KOAE<{a-FtZ{HsYM<8sbg+0z_%)L=&ZmSLwG#2F$67Z&EQ}pVE?UQv>~<(ua@JBRcQbyi zYVhbu+dfAXlak%%y4M&x&sNFV#NJ+EP?G7W@Mppo>ZanYjwP;F-3(6k?wOUfu;Om} zokq0sje+(}Rr!Ip^arWFHA{_8*lP(VPPNiKLl3Gae|q<%G%TiI^M*lglepWA*WV#mQas5Y=58PM zxjiX%G9TEgls~*y%}xE;m>9*Z;l1B~DCo}C5w;|0XN~MqsM{4@GGDl0fo+**(OQ$h zKay;R1#H<|wo1-AQra2-9Yff4zg&e4uRk{8|vHjRGvb2aNdHLwspNeX^Z908VJ*?X>ZiZ+62eUveO7!An z<=VCxPTO52&SAdEeLY{!N&M)&cZI`Aoy7XzqQ5Tq@-TAh>E;F->*J8(A?kUOx%$$PE&$e)*iOs z)LvryZJ(AEre`S3_bq*E92V%JS`^5=LK%D@j#W!1~$ReS&Ew;PxG?9A~G9bn-lUYhpAdH0R_G*cz(0c*FGzpH9f zu2ttczbf-MnB*|8dH;!J$|g=@jDn7n+e_eg%2okUP71dMlhGTvWNC$fs30F#1e3f{ zF6p;PKva@No8Z?5aG!zOLN-Ck`DI++W5c@ET^@64$$+O5p4U3R512%33bq(moVw}e zth0mo)XE^vrZ7E&6V3%Y!b{xC)H@FHkLlze3wYq77+rh!SxvQ^ud2w3O8C)I≪S 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 delta 35185 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 SqpHA=>sDkGntn))@c{rk`w-9o diff --git a/package.json b/package.json index 908df1e..43328d4 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "typescript": "^5.0.0" }, "dependencies": { - "@slack/bolt": "^3.19.0", + "@slack/bolt": "^4.0.0", "@types/bcrypt": "^5.0.2", "@types/node-schedule": "^2.1.7", "bcrypt": "^5.1.1",