remake yabai command to be more fun!

This commit is contained in:
2025-06-24 02:09:12 +02:00
parent 2a430befbf
commit 39448cbad4
3 changed files with 21 additions and 12 deletions

View File

@@ -1,5 +1,4 @@
import { EventSubChannelChatMessageEvent } from "@twurple/eventsub-base";
import { type HelixSendChatMessageParams } from "@twurple/api";
import { User } from "../user";
/** The Command class represents a command */
@@ -34,9 +33,16 @@ for (const file of files) {
export default commands;
export { intents };
import { singleUserMode, chatterApi, chatterId, streamerId } from "..";
import { singleUserMode, chatterApi, chatterId, streamerId, streamerApi } from "..";
/** Helper function to send a message to the stream */
export const sendMessage = async (message: string, replyParentMessageId?: string) => {
singleUserMode ? await chatterApi.chat.sendChatMessage(streamerId, message, { replyParentMessageId }) : chatterApi.asUser(chatterId, async newapi => newapi.chat.sendChatMessage(streamerId, message, { replyParentMessageId }));
};
/** Helper function to timeout a specific user */
export const doTimeout = async (userid: string, reason: string, duration = 60) => {
// TODO: make sure mods lose their sword, THEN get timed out, and get the sword back after timeout expires (check v1 code for implementation)
if ([chatterId, streamerId].includes(userid)) return; // make sure unbannable users don't get banned
await streamerApi.moderation.banUser(streamerId, { user: userid, reason, duration });
};

View File

@@ -1,16 +1,18 @@
import { Command, sendMessage } from ".";
import { type HelixSendChatMessageParams } from "@twurple/api";
import { Command, doTimeout, sendMessage } from ".";
// Remake of the !yabai command in ttv/kiara_tv
export default new Command('yabai',
['yabai', 'goon'],
[],
['moderator:manage:banned_users'],
async msg => {
const rand = Math.floor(Math.random() * 100) + 1;
if (rand < 25) await sendMessage(`${rand}% yabai! chumpi4Bewwy`, msg.messageId);
else if (rand < 50) await sendMessage(`${rand}% yabai chumpi4Hustle`, msg.messageId);
else if (rand === 50) await sendMessage(`${rand}% yabai kiawaBlank`, msg.messageId);
else if (rand < 80) await sendMessage(`${rand}% yabai chumpi4Shock`, msg.messageId);
else await sendMessage(`${rand}% yabai chumpi4Jail`, msg.messageId);
if (rand < 25) sendMessage(`${rand}% yabai! GIGACHAD`, msg.messageId);
else if (rand < 50) sendMessage(`${rand}% yabai POGGERS`, msg.messageId);
else if (rand === 50) sendMessage(`${rand}% yabai ok`, msg.messageId);
else if (rand < 90) sendMessage(`${rand}% yabai AINTNOWAY`, msg.messageId);
else {
sendMessage(`${msg.chatterDisplayName} is ${rand}% yabai CAUGHT`);
doTimeout(msg.chatterId, 'TOO SUS');
};
}
);

View File

@@ -15,7 +15,8 @@ eventSub.onChannelChatMessage(streamerId, streamerId, async msg => {
if (msg.messageText.startsWith(commandPrefix)) {
const commandSelection = msg.messageText.slice(commandPrefix.length).split(' ')[0]!;
const selected = commands.get(commandSelection.toLowerCase());
if (!selected) { await sendMessage(`${commandSelection} command does not exist`, { replyParentMessageId: msg.messageId }); return; };
await selected.execute(msg, user!);
if (!selected) { await sendMessage(`${commandSelection} command does not exist`, msg.messageId); return; };
try { await selected.execute(msg, user!); }
catch (err) { console.error(err); };
};
});