improved cheer argument parsing, minor bugfixes

This commit is contained in:
2025-07-07 15:56:01 +02:00
parent afd7dda332
commit 73d281c6c6
5 changed files with 18 additions and 10 deletions

View File

@@ -4,8 +4,8 @@ import { EventSubChannelChatMessageEvent } from "@twurple/eventsub-base";
export class Cheer {
public readonly name: string;
public readonly amount: number;
public readonly execute: (msg: EventSubChannelChatMessageEvent, sender: User, testmessage: boolean) => Promise<void>;
constructor(name: string, amount: number, execution: (msg: EventSubChannelChatMessageEvent, sender: User, testmessage: boolean) => Promise<void>) {
public readonly execute: (msg: EventSubChannelChatMessageEvent, sender: User) => Promise<void>;
constructor(name: string, amount: number, execution: (msg: EventSubChannelChatMessageEvent, sender: User) => Promise<void>) {
this.name = name.toLowerCase();
this.amount = amount;
this.execute = execution;

View File

@@ -7,15 +7,16 @@ import { User } from "../user";
import { timeout } from "../lib/timeout";
import { createTimeoutRecord } from "../db/dbTimeouts";
import logger from "../lib/logger";
import { parseCheerArgs } from "../lib/parseCommandArgs";
export default new Cheer('timeout', 100, async (msg, user, testmessage) => {
const args = msg.messageText.split(' ');
if (testmessage) { args.shift(); args.shift(); }; //Discard the '!testcheer' and '100' arguments
export default new Cheer('timeout', 100, async (msg, user) => {
const args = parseCheerArgs(msg.messageText);
if (!args[0]) { await handleNoBlasterTarget(msg, user, false); return; };
const target = await User.initUsername(args[0].toLowerCase());
if (!target) { await handleNoBlasterTarget(msg, user, false); return; };
await getUserRecord(target);
const result = await timeout(target, `You got blasted by ${user.displayName}!`)
const result = await timeout(target, `You got blasted by ${user.displayName}!`, 60);
if (result.status) await Promise.all([
sendMessage(`GOTTEM ${target.displayName} got BLASTED by ${user.displayName} GOTTEM`),
createTimeoutRecord(user, target, 'blaster'),

View File

@@ -2,10 +2,10 @@ import { Command, sendMessage } from ".";
import { handleCheer } from "../events/message";
import parseCommandArgs from "../lib/parseCommandArgs";
export default new Command('testcheer', ['testcheer'], 'streamer', async (msg, user) => {
export default new Command('testcheer', ['testcheer'], 'streamer', async msg => {
const args = parseCommandArgs(msg.messageText);
if (!args[0]) { await sendMessage('Please specify the amount of fake bits you want to send', msg.messageId); return; };
if (isNaN(Number(args[0]))) { await sendMessage(`${args[0]} is not a valid amout of bits`); return; };
const bits = Number(args.shift()); // we shift it so the amount of bits isn't part of the handleCheer message, we already know that args[0] can be parsed as a number so this is fine.
await handleCheer(msg, bits, true);
await handleCheer(msg, bits);
}, false);

View File

@@ -61,7 +61,7 @@ async function handleChatMessage(msg: EventSubChannelChatMessageEvent) {
};
};
export async function handleCheer(msg: EventSubChannelChatMessageEvent, bits: number, testmessage = false) {
export async function handleCheer(msg: EventSubChannelChatMessageEvent, bits: number) {
const selection = cheers.get(bits);
if (!selection) return;
@@ -73,7 +73,7 @@ export async function handleCheer(msg: EventSubChannelChatMessageEvent, bits: nu
if (disabledcheers.includes(selection.name)) { await sendMessage(`The ${selection.name} cheer is disabled`); return; };
try {
selection.execute(msg, user!, testmessage);
selection.execute(msg, user!);
} catch (err) {
logger.err(err as string);
};

View File

@@ -7,3 +7,10 @@ export default function parseCommandArgs(input: string) {
const b = a.trim().split(' ').slice(sliceLength);
return b;
};
export function parseCheerArgs(input: string) {
const a = input.slice(commandPrefix.length);
const sliceLength = a.startsWith('testcheer') ? 2 : 0;
const b = a.trim().split(' ').slice(sliceLength);
return b;
};