From 576f28df9dfb49308020e873ddd26135c3c86c25 Mon Sep 17 00:00:00 2001 From: qwerinope Date: Fri, 11 Apr 2025 14:44:23 +0200 Subject: [PATCH] add new plural system --- src/commands/admin.ts | 4 +++- src/commands/inventory.ts | 37 +++++++++---------------------------- src/commands/itemAliases.ts | 4 ++-- src/commands/use.ts | 4 ++-- src/lib/userHelper.ts | 9 ++------- 5 files changed, 18 insertions(+), 40 deletions(-) diff --git a/src/commands/admin.ts b/src/commands/admin.ts index 79a545a..52f368d 100644 --- a/src/commands/admin.ts +++ b/src/commands/admin.ts @@ -1,5 +1,6 @@ import { createBotCommand } from "@twurple/easy-bot"; import api from "../lib/api"; +import items from "../items" import { changeItemCount } from "../lib/items"; import { changeBalance } from "../lib/userHelper"; import { vulnerableUsers } from "../lib/timeoutHelper"; @@ -17,7 +18,8 @@ const give = createBotCommand('give', async (params, { say, broadcasterId, userI if (data.reason === 'negative') { await say(`${target.name} only has ${data.count}. Cannot yoink ${-parseInt(params[2])} ${params[1]}`); return } else if (data.reason === 'noexist') { await say(`Can't find item ${params[1]}`); return } - await say(`${target.name} now has ${data.count} ${params[1]}`) + const selection = items.find(item => item.name === params[1].toLowerCase()) + await say(`${target.name} now has ${data.count} ${params[1]}${data.count === 1 ? '' : selection?.plural}`) }) const vulnChatters = createBotCommand('vulnchatters', async (_params, { say, userId, broadcasterId, userName }) => { diff --git a/src/commands/inventory.ts b/src/commands/inventory.ts index a7297b4..1f8877b 100644 --- a/src/commands/inventory.ts +++ b/src/commands/inventory.ts @@ -1,12 +1,13 @@ import { createBotCommand } from "@twurple/easy-bot"; import { getInventory } from "../lib/userHelper"; import api from "../lib/api"; +import items from "../items"; import { HelixUser } from "@twurple/api"; export default createBotCommand('inv', async (params, { userName, say }) => { let user: HelixUser | null if (params.length !== 0) { - user = await api.users.getUserByName(params[0].replace(/[^a-zA-Z0-9]/g, '')) + user = await api.users.getUserByName(params[0].replace(/[@]/g, '')) } else user = await api.users.getUserByName(userName) if (!user) { await say(`User ${params[0]} not found`) @@ -15,35 +16,15 @@ export default createBotCommand('inv', async (params, { userName, say }) => { const data = params.length === 0 ? { me: true, inv: await getInventory(user!) } : { me: false, inv: await getInventory(user!) } - interface parsedData { - amount: number, - name: string, - plural: string + const messagedata: string[] = [] + + for (const [key, amount] of Object.entries(data.inv)) { + if (amount === 0) continue + const itemselection = items.find(item => item.name === key) + messagedata.push(`${itemselection?.prettyname}${amount === 1 ? '' : itemselection?.plural}: ${amount}`) } - let dataparsed: parsedData[] = [] - for (const key of Object.entries(data.inv)) { - if (key[1] === 0) continue - switch (key[0]) { - case 'lootbox': - dataparsed.push({ amount: key[1], name: key[0], plural: 'es' }) - break - case 'version': - break - default: - dataparsed.push({ amount: key[1], name: key[0], plural: 's' }) - break - } - } - - if (!dataparsed) { await say(`${data.me ? userName : params[0]} has no items!`); return } - - let messagedata: string[] = [] - for (const item of dataparsed) { - messagedata.push(`${item.name + (item.amount === 1 ? '' : item.plural)}: ${item.amount}`) - } - - if (messagedata.length === 0) {await say(`${data.me ? userName : params[0]} has no items!`); return} + if (messagedata.length === 0) { await say(`${data.me ? userName : params[0]} has no items!`); return } await say(` inventory of ${data.me ? userName : params[0]}: diff --git a/src/commands/itemAliases.ts b/src/commands/itemAliases.ts index b0d8841..d3c7660 100644 --- a/src/commands/itemAliases.ts +++ b/src/commands/itemAliases.ts @@ -11,7 +11,7 @@ for (const item of items) { switch (item.name) { case 'blaster': case 'silverbullet': - if (params[0] === undefined) return + if (params[0] === undefined) { await say('nice miss bro'); return } await item.execute(user!, say, broadcasterId, params[0].replace(/[@]/g, '')) break case 'grenade': @@ -20,7 +20,7 @@ for (const item of items) { await item.execute(user!, say) break case 'clipboard': - if (params[0] === undefined) return + if (params[0] === undefined) { await say("Please specify what the clipboard asks") } await item.execute(user!, say, broadcasterId, params.join(' ')) break } diff --git a/src/commands/use.ts b/src/commands/use.ts index 17c23f3..0532bc0 100644 --- a/src/commands/use.ts +++ b/src/commands/use.ts @@ -13,7 +13,7 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user switch (selection.name) { case 'blaster': case 'silverbullet': - if (params[1] === undefined) return + if (params[1] === undefined) { await say('nice miss bro'); return } await selection.execute(user!, say, broadcasterId, params[1].replace(/[@]/g, '')) break case 'grenade': @@ -24,7 +24,7 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user await selection.execute(user!, say) break case 'clipboard': - if (params[1] === undefined) return + if (params[1] === undefined) { await say("Please specify what the clipboard asks")} await selection.execute(user!, say, broadcasterId, params.slice(1).join(' ')) break } diff --git a/src/lib/userHelper.ts b/src/lib/userHelper.ts index d02dbb2..5c33503 100644 --- a/src/lib/userHelper.ts +++ b/src/lib/userHelper.ts @@ -77,13 +77,8 @@ async function getItemUses(userId: string, monthdata?: string): Promise item.name === 'blaster').length, grenade: items.filter((item) => item.name === 'grenade').length, - silverbullet: items.filter((item) => item.name === 'silverbullet').length, tnt: items.filter((item) => item.name === 'tnt').length, - - clipboard: items.filter((item) => item.name === 'clipboard').length, - lootbox: items.filter((item) => item.name === 'lootbox').length } } @@ -100,8 +95,8 @@ interface statsGetResult extends timeoutsGetResult { export async function getStats(user: HelixUser, monthdata?: string): Promise { await DBValidation(user) const { hit, shot } = await getTimeouts(user.id, monthdata) - const uses = await getItemUses(user.id, monthdata) - return { hit, shot, used: uses } + const used = await getItemUses(user.id, monthdata) + return { hit, shot, used } } export async function updateInventory(user: HelixUser, newinv: inventory) {