mirror of
https://github.com/qwerinope/qweribot.git
synced 2025-12-19 08:41:39 +01:00
add new plural system
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import { createBotCommand } from "@twurple/easy-bot";
|
import { createBotCommand } from "@twurple/easy-bot";
|
||||||
import api from "../lib/api";
|
import api from "../lib/api";
|
||||||
|
import items from "../items"
|
||||||
import { changeItemCount } from "../lib/items";
|
import { changeItemCount } from "../lib/items";
|
||||||
import { changeBalance } from "../lib/userHelper";
|
import { changeBalance } from "../lib/userHelper";
|
||||||
import { vulnerableUsers } from "../lib/timeoutHelper";
|
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 }
|
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 }
|
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 }) => {
|
const vulnChatters = createBotCommand('vulnchatters', async (_params, { say, userId, broadcasterId, userName }) => {
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { createBotCommand } from "@twurple/easy-bot";
|
import { createBotCommand } from "@twurple/easy-bot";
|
||||||
import { getInventory } from "../lib/userHelper";
|
import { getInventory } from "../lib/userHelper";
|
||||||
import api from "../lib/api";
|
import api from "../lib/api";
|
||||||
|
import items from "../items";
|
||||||
import { HelixUser } from "@twurple/api";
|
import { HelixUser } from "@twurple/api";
|
||||||
|
|
||||||
export default createBotCommand('inv', async (params, { userName, say }) => {
|
export default createBotCommand('inv', async (params, { userName, say }) => {
|
||||||
let user: HelixUser | null
|
let user: HelixUser | null
|
||||||
if (params.length !== 0) {
|
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)
|
} else user = await api.users.getUserByName(userName)
|
||||||
if (!user) {
|
if (!user) {
|
||||||
await say(`User ${params[0]} not found`)
|
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!) }
|
const data = params.length === 0 ? { me: true, inv: await getInventory(user!) } : { me: false, inv: await getInventory(user!) }
|
||||||
|
|
||||||
interface parsedData {
|
const messagedata: string[] = []
|
||||||
amount: number,
|
|
||||||
name: string,
|
for (const [key, amount] of Object.entries(data.inv)) {
|
||||||
plural: string
|
if (amount === 0) continue
|
||||||
|
const itemselection = items.find(item => item.name === key)
|
||||||
|
messagedata.push(`${itemselection?.prettyname}${amount === 1 ? '' : itemselection?.plural}: ${amount}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let dataparsed: parsedData[] = []
|
if (messagedata.length === 0) { await say(`${data.me ? userName : params[0]} has no items!`); return }
|
||||||
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}
|
|
||||||
|
|
||||||
await say(`
|
await say(`
|
||||||
inventory of ${data.me ? userName : params[0]}:
|
inventory of ${data.me ? userName : params[0]}:
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ for (const item of items) {
|
|||||||
switch (item.name) {
|
switch (item.name) {
|
||||||
case 'blaster':
|
case 'blaster':
|
||||||
case 'silverbullet':
|
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, ''))
|
await item.execute(user!, say, broadcasterId, params[0].replace(/[@]/g, ''))
|
||||||
break
|
break
|
||||||
case 'grenade':
|
case 'grenade':
|
||||||
@@ -20,7 +20,7 @@ for (const item of items) {
|
|||||||
await item.execute(user!, say)
|
await item.execute(user!, say)
|
||||||
break
|
break
|
||||||
case 'clipboard':
|
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(' '))
|
await item.execute(user!, say, broadcasterId, params.join(' '))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user
|
|||||||
switch (selection.name) {
|
switch (selection.name) {
|
||||||
case 'blaster':
|
case 'blaster':
|
||||||
case 'silverbullet':
|
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, ''))
|
await selection.execute(user!, say, broadcasterId, params[1].replace(/[@]/g, ''))
|
||||||
break
|
break
|
||||||
case 'grenade':
|
case 'grenade':
|
||||||
@@ -24,7 +24,7 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user
|
|||||||
await selection.execute(user!, say)
|
await selection.execute(user!, say)
|
||||||
break
|
break
|
||||||
case 'clipboard':
|
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(' '))
|
await selection.execute(user!, say, broadcasterId, params.slice(1).join(' '))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,13 +77,8 @@ async function getItemUses(userId: string, monthdata?: string): Promise<inventor
|
|||||||
if (monthdata) monthquery = ` && created~"${monthdata}"`
|
if (monthdata) monthquery = ` && created~"${monthdata}"`
|
||||||
const items = await pb.collection('itemuses').getFullList({ filter: `user="${userId}"${monthquery}` })
|
const items = await pb.collection('itemuses').getFullList({ filter: `user="${userId}"${monthquery}` })
|
||||||
return {
|
return {
|
||||||
blaster: items.filter((item) => item.name === 'blaster').length,
|
|
||||||
grenade: items.filter((item) => item.name === 'grenade').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,
|
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<statsGetResult> {
|
export async function getStats(user: HelixUser, monthdata?: string): Promise<statsGetResult> {
|
||||||
await DBValidation(user)
|
await DBValidation(user)
|
||||||
const { hit, shot } = await getTimeouts(user.id, monthdata)
|
const { hit, shot } = await getTimeouts(user.id, monthdata)
|
||||||
const uses = await getItemUses(user.id, monthdata)
|
const used = await getItemUses(user.id, monthdata)
|
||||||
return { hit, shot, used: uses }
|
return { hit, shot, used }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateInventory(user: HelixUser, newinv: inventory) {
|
export async function updateInventory(user: HelixUser, newinv: inventory) {
|
||||||
|
|||||||
Reference in New Issue
Block a user