fix !give negative numbers, !modme, automatic remod system (FUCK JAVASCRIPT)

This commit is contained in:
2025-04-08 23:43:27 +02:00
parent 9a2ce6b3a4
commit 7b6f8bc07f
4 changed files with 17 additions and 9 deletions

View File

@@ -12,7 +12,7 @@ const give = createBotCommand('give', async (params, { say, broadcasterId, userI
if (isNaN(parseInt(params[2]))) { await say(`Specify the amount`); return }
const data = params[1].toLowerCase() === 'qbucks' ? await changeBalance(target, parseInt(params[2])) : await changeItemCount(target, params[1].toLowerCase(), parseInt(params[2]))
const data = params[1].toLowerCase() === 'qbucks' ? await changeBalance(target, parseInt(params[2])) : await changeItemCount(target, params[1].toLowerCase(), parseInt(params[2]), true)
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 }

View File

@@ -4,9 +4,9 @@ import api, { broadcasterApi } from "../lib/api";
const MODS = process.env.MODS
if (!MODS) { console.error("Please set the MODS environment variable."); process.exit(1) }
export default createBotCommand('modme', async (_params, { userName, broadcasterId }) => {
export default createBotCommand('modme', async (_params, { userName, broadcasterId, userId }) => {
if (!MODS.includes(userName)) return
if (broadcasterApi) await broadcasterApi.moderation.addModerator(broadcasterId, userName)
else await api.moderation.addModerator(broadcasterId, userName)
if (broadcasterApi) await broadcasterApi.moderation.addModerator(broadcasterId, userId)
else await api.moderation.addModerator(broadcasterId, userId)
})

View File

@@ -12,7 +12,7 @@ interface itemChangeResult {
inv?: inventory
}
export async function changeItemCount(user: HelixUser, item: string, amount = -1): Promise<itemChangeResult> {
export async function changeItemCount(user: HelixUser, item: string, amount = -1, preconfirmed=false): Promise<itemChangeResult> {
if (!ITEMS.includes(item)) return { result: false, reason: 'noexist', count: 0 }
let inv = await getInventory(user)
@@ -23,7 +23,7 @@ export async function changeItemCount(user: HelixUser, item: string, amount = -1
value: newcount,
})
if (amount > 0) await updateInventory(user, inv)
if (amount > 0 || preconfirmed === true) await updateInventory(user, inv)
return { result: true, reason: '', count: inv[item], inv }
}

View File

@@ -19,7 +19,7 @@ export async function timeout(broadcasterid: string, target: HelixUser, duration
try {
if (await tmpapi.moderation.checkUserMod(broadcasterid, target)) {
await tmpapi.moderation.removeModerator(broadcasterid, target)
remodMod(broadcasterid, target, duration, tmpapi)
remodMod(broadcasterid, target, duration * 1000, tmpapi)
}
await tmpapi.moderation.banUser(broadcasterid, { duration, reason, user: target })
await DBValidation(target)
@@ -45,8 +45,16 @@ export async function addTimeoutToDB(attacker: HelixUser, target: HelixUser, sou
function remodMod(broadcasterid: string, target: HelixUser, duration: number, api: ApiClient) {
setTimeout(async () => {
const bandata = await api.moderation.getBannedUsers(broadcasterid, { userId: target.id })
if (bandata.data.length !== 0) {
const timeoutleft = -Date.now() + Date.parse(bandata.data[0].expiryDate?.toString()! + 3000) // date when timeout expires - current date + 3 seconds constant
remodMod(broadcasterid, target, timeoutleft, api) // Call the current function with new time (recursion)
} else { // If user is still timed out it doesn't try to remod the target
try {
await api.moderation.addModerator(broadcasterid, target)
}, (duration + 3) * 1000)
} catch (err) { console.log(err) } // This triggers when the timeout got shortened. try/catch so no runtime error
}
}, duration + 3000) // callback gets called after duration of timeout + 3 seconds
}
export let vulnerableUsers: string[] = []