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 { useBlaster } from "../lib/items";
import { useBlaster, useSilverBullet } from "../lib/items";
import api from "../lib/api";
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
switch(params[0].toLowerCase()) {
switch (params[0].toLowerCase()) {
case 'blaster':
if (params[1] === undefined) return
await useBlaster(broadcasterId, user!, params[1], say)
break
case 'silver':
case 'silverbullet':
if (params[1] === undefined) return
await useSilverBullet(broadcasterId, user!, params[1], say)
break
default:
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>) {
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}`)
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 addTimeoutToDB(attacker, target!, 'blaster')
} 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
}
}
}