From 39448cbad439273446a165a09fefe74f0edc200b Mon Sep 17 00:00:00 2001 From: qwerinope Date: Tue, 24 Jun 2025 02:09:12 +0200 Subject: [PATCH] remake yabai command to be more fun! --- bot/commands/index.ts | 10 ++++++++-- bot/commands/yabai.ts | 18 ++++++++++-------- bot/events/message.ts | 5 +++-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/bot/commands/index.ts b/bot/commands/index.ts index 551a3d3..22c6a06 100644 --- a/bot/commands/index.ts +++ b/bot/commands/index.ts @@ -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 }); +}; diff --git a/bot/commands/yabai.ts b/bot/commands/yabai.ts index 59c09cb..4ab7cc4 100644 --- a/bot/commands/yabai.ts +++ b/bot/commands/yabai.ts @@ -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'); + }; } ); diff --git a/bot/events/message.ts b/bot/events/message.ts index 3f292a8..eafcf64 100644 --- a/bot/events/message.ts +++ b/bot/events/message.ts @@ -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); }; }; });