add silverbullet, ensure user has item before using

This commit is contained in:
2025-04-02 22:54:23 +02:00
parent 92d5c53376
commit 72ae1a634e
2 changed files with 39 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
import { createBotCommand } from "@twurple/easy-bot"; import { createBotCommand } from "@twurple/easy-bot";
import { useBlaster } from "../lib/items"; import { useBlaster, useSilverBullet } from "../lib/items";
import api from "../lib/api"; import api from "../lib/api";
export default createBotCommand('use', async (params, { say, broadcasterId, userId }) => { export default createBotCommand('use', async (params, { say, broadcasterId, userId }) => {
@@ -7,11 +7,16 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user
if (params[0] === undefined) return if (params[0] === undefined) return
switch(params[0].toLowerCase()) { switch (params[0].toLowerCase()) {
case 'blaster': case 'blaster':
if (params[1] === undefined) return if (params[1] === undefined) return
await useBlaster(broadcasterId, user!, params[1], say) await useBlaster(broadcasterId, user!, params[1], say)
break break
case 'silver':
case 'silverbullet':
if (params[1] === undefined) return
await useSilverBullet(broadcasterId, user!, params[1], say)
break
default: default:
await say(`${params[0]} does not exist mandoooYikes`) await say(`${params[0]} does not exist mandoooYikes`)
} }

View File

@@ -28,9 +28,12 @@ export async function changeItemCount(user: HelixUser, item: string, amount = -1
export async function useBlaster(broadcasterId: string, attacker: HelixUser, targetname: string, say: (arg0: string) => Promise<void>) { export async function useBlaster(broadcasterId: string, attacker: HelixUser, targetname: string, say: (arg0: string) => Promise<void>) {
const target = await api.users.getUserByName(targetname) const target = await api.users.getUserByName(targetname)
const itemResult = await changeItemCount(attacker, 'blaster')
if (!itemResult.result && itemResult.reason === 'negative') { await say('You have no blasters mandoooYikes'); return }
const result = await timeout(broadcasterId, target!, 60, `You got blasted by ${attacker.name}`) const result = await timeout(broadcasterId, target!, 60, `You got blasted by ${attacker.name}`)
if (result.status) { if (result.status) {
const itemResult = await changeItemCount(attacker, 'blaster')
await say(`${targetname} got mandoooGun by ${attacker.name}! mandoooGOTTEM ${attacker.name} has ${itemResult.count} blaster${itemResult.count === 1 ? '' : 's'} remaining`) await say(`${targetname} got mandoooGun by ${attacker.name}! mandoooGOTTEM ${attacker.name} has ${itemResult.count} blaster${itemResult.count === 1 ? '' : 's'} remaining`)
await addTimeoutToDB(attacker, target!, 'blaster') await addTimeoutToDB(attacker, target!, 'blaster')
} else { } else {
@@ -48,3 +51,30 @@ export async function useBlaster(broadcasterId: string, attacker: HelixUser, tar
} }
} }
} }
export async function useSilverBullet(broadcasterId: string, attacker: HelixUser, targetname: string, say: (arg0: string) => Promise<void>) {
const target = await api.users.getUserByName(targetname)
const itemResult = await changeItemCount(attacker, 'silverbullet')
if (!itemResult.result && itemResult.reason === 'negative') { await say('You have no silver bullets mandoooYikes'); return }
const result = await timeout(broadcasterId, target!, 60 * 60 * 24, `You got hit by a silver bullet fired by ${attacker.name}`)
if (result.status) {
await say(`${target?.name} mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute `)
await addTimeoutToDB(attacker, target!, 'silverbullet')
} else {
switch (result.reason) {
case 'noexist':
await say(`${targetname} doesn't exist!`)
break
case 'banned':
await say(`${targetname} is already dead!`)
break
case 'unknown':
await say(`NO!`)
await timeout(broadcasterId, attacker, 60, "NO!")
break
}
}
}