From c6e5c76187cd180c7df7c6f44a026e5a33d2ce8e Mon Sep 17 00:00:00 2001 From: qwerinope Date: Sun, 6 Jul 2025 20:54:48 +0200 Subject: [PATCH] move logger into special file --- bot/auth.ts | 2 +- bot/commands/donateqbucks.ts | 2 +- bot/commands/giveitem.ts | 2 +- bot/db/connection.ts | 2 +- bot/db/dbTimeouts.ts | 2 +- bot/db/dbUsedItems.ts | 2 +- bot/db/dbUser.ts | 3 ++- bot/events/index.ts | 3 ++- bot/events/message.ts | 3 ++- bot/index.ts | 10 +------ bot/items/blaster_1.ts | 51 ++++++++++++++++++++++++++++++++++++ bot/lib/logger.ts | 11 ++++++++ bot/lib/timeout.ts | 3 ++- 13 files changed, 77 insertions(+), 19 deletions(-) create mode 100644 bot/items/blaster_1.ts create mode 100644 bot/lib/logger.ts diff --git a/bot/auth.ts b/bot/auth.ts index 3a93561..de5af9b 100644 --- a/bot/auth.ts +++ b/bot/auth.ts @@ -1,7 +1,7 @@ import { RefreshingAuthProvider, exchangeCode, type AccessToken } from "@twurple/auth"; import { createAuthRecord, deleteAuthRecord, getAuthRecord, updateAuthRecord } from "./db/dbAuth"; -import { logger } from "."; +import logger from "./lib/logger"; import kleur from "kleur"; async function initAuth(userId: string, clientId: string, clientSecret: string, requestedIntents: string[], streamer: boolean): Promise { diff --git a/bot/commands/donateqbucks.ts b/bot/commands/donateqbucks.ts index ead8566..13b19a0 100644 --- a/bot/commands/donateqbucks.ts +++ b/bot/commands/donateqbucks.ts @@ -4,7 +4,7 @@ import { getUserRecord } from "../db/dbUser"; import parseCommandArgs from "../lib/parseCommandArgs"; import { changeBalance } from "../lib/changeBalance"; import { User } from "../user"; -import { logger } from ".."; +import logger from "../lib/logger"; export default new Command('donate', ['donate'], 'chatter', async (msg, user) => { const args = parseCommandArgs(msg.messageText); diff --git a/bot/commands/giveitem.ts b/bot/commands/giveitem.ts index d2faf38..afc46de 100644 --- a/bot/commands/giveitem.ts +++ b/bot/commands/giveitem.ts @@ -1,10 +1,10 @@ import { Command, sendMessage } from "."; -import { logger } from ".."; import type { userRecord } from "../db/connection"; import { getUserRecord } from "../db/dbUser"; import items, { changeItemCount } from "../items"; import parseCommandArgs from "../lib/parseCommandArgs"; import { User } from "../user"; +import logger from "../lib/logger"; export default new Command('give', ['give'], 'chatter', async (msg, user) => { const args = parseCommandArgs(msg.messageText); diff --git a/bot/db/connection.ts b/bot/db/connection.ts index cb6949d..2604ee0 100644 --- a/bot/db/connection.ts +++ b/bot/db/connection.ts @@ -1,7 +1,7 @@ import type { AccessToken } from "@twurple/auth"; import PocketBase, { RecordService } from "pocketbase"; import type { inventory } from "../items"; -import { logger } from ".."; +import logger from "../lib/logger"; const pocketbaseurl = process.env.POCKETBASE_URL ?? "localhost:8090"; if (pocketbaseurl === "") { logger.enverr("POCKETBASE_URL"); process.exit(1); }; diff --git a/bot/db/dbTimeouts.ts b/bot/db/dbTimeouts.ts index 9c11351..f99a8cd 100644 --- a/bot/db/dbTimeouts.ts +++ b/bot/db/dbTimeouts.ts @@ -1,6 +1,6 @@ import pocketbase from "./connection"; import { User } from "../user"; -import { logger } from ".."; +import logger from "../lib/logger"; const pb = pocketbase.collection('timeouts'); export async function createTimeoutRecord(user: User, target: User, item: string): Promise { diff --git a/bot/db/dbUsedItems.ts b/bot/db/dbUsedItems.ts index 0980218..c125093 100644 --- a/bot/db/dbUsedItems.ts +++ b/bot/db/dbUsedItems.ts @@ -1,6 +1,6 @@ import pocketbase from "./connection"; import { User } from "../user"; -import { logger } from ".."; +import logger from "../lib/logger"; const pb = pocketbase.collection('usedItems'); export async function createUsedItemRecord(user: User, item: string): Promise { diff --git a/bot/db/dbUser.ts b/bot/db/dbUser.ts index 40ecdbf..0da23c8 100644 --- a/bot/db/dbUser.ts +++ b/bot/db/dbUser.ts @@ -1,7 +1,8 @@ import pocketbase, { type userRecord } from "./connection"; import { emptyInventory, itemarray } from "../items"; import type { User } from "../user"; -import { logger } from ".."; +import logger from "../lib/logger"; + const pb = pocketbase.collection('users'); /** Use this function to both ensure existance and to retreive data */ diff --git a/bot/events/index.ts b/bot/events/index.ts index bd1ce9d..dd58196 100644 --- a/bot/events/index.ts +++ b/bot/events/index.ts @@ -1,5 +1,6 @@ import kleur from "kleur"; -import { eventSub, streamerApi, streamerId, logger } from ".."; +import { eventSub, streamerApi, streamerId } from ".."; +import logger from "../lib/logger"; eventSub.onRevoke(event => { logger.ok(`Successfully revoked EventSub subscription: ${kleur.underline(event.id)}`); diff --git a/bot/events/message.ts b/bot/events/message.ts index 6b6483c..9996184 100644 --- a/bot/events/message.ts +++ b/bot/events/message.ts @@ -1,8 +1,9 @@ -import { chatterId, streamerId, eventSub, commandPrefix, singleUserMode, streamerUsers, logger } from ".."; +import { chatterId, streamerId, eventSub, commandPrefix, singleUserMode, streamerUsers } from ".."; import { User } from "../user"; import commands, { sendMessage } from "../commands"; import { redis } from "bun"; import { isAdmin } from "../lib/admins"; +import logger from "../lib/logger"; logger.info(`Loaded the following commands: ${commands.keys().toArray().join(', ')}`); diff --git a/bot/index.ts b/bot/index.ts index 0163d9f..9148e0d 100644 --- a/bot/index.ts +++ b/bot/index.ts @@ -2,19 +2,11 @@ import { createAuthProvider } from "./auth"; import { ApiClient } from "@twurple/api"; import { EventSubWsListener } from "@twurple/eventsub-ws"; import { addAdmin } from "./lib/admins"; -import kleur from "kleur"; +import logger from "./lib/logger"; const CHATTERINTENTS = ["user:read:chat", "user:write:chat", "user:bot"]; const STREAMERINTENTS = ["user:read:chat", "moderation:read", "channel:manage:moderators", "moderator:manage:banned_users"]; -export const logger = { - err: (arg: string) => console.error(kleur.red().bold().italic('[ERROR] ') + kleur.red().bold(arg)), - warn: (arg: string) => console.warn(kleur.yellow().bold().italic('[WARN] ') + kleur.yellow().bold(arg)), - info: (arg: string) => console.info(kleur.white().bold().italic('[INFO] ') + kleur.white(arg)), - ok: (arg: string) => console.info(kleur.green().bold(arg)), - enverr: (arg: string) => logger.err(`Please provide a ${arg} in the .env`) -}; - export const singleUserMode = process.env.CHATTER_IS_STREAMER === 'true'; export const chatterId = process.env.CHATTER_ID ?? ""; if (chatterId === "") { logger.enverr('CHATTER_ID'); process.exit(1); }; diff --git a/bot/items/blaster_1.ts b/bot/items/blaster_1.ts new file mode 100644 index 0000000..2571b38 --- /dev/null +++ b/bot/items/blaster_1.ts @@ -0,0 +1,51 @@ +import { changeItemCount, Item } from "."; +import { sendMessage } from "../commands"; +import { createTimeoutRecord } from "../db/dbTimeouts"; +import { createUsedItemRecord } from "../db/dbUsedItems"; +import { getUserRecord } from "../db/dbUser"; +import parseCommandArgs from "../lib/parseCommandArgs"; +import { timeout } from "../lib/timeout"; +import { User } from "../user"; + +const ITEMNAME = 'blaster'; + +export default new Item(ITEMNAME, 'Blaster', 's', + 'Times a specific person out for 60 seconds', + ['blaster', 'blast'], + async (msg, user) => { + const userObj = await getUserRecord(user); + if (userObj.inventory[ITEMNAME]! < 1) { await sendMessage(`You don't have any blasters!`, msg.messageId); return; }; + const messagequery = parseCommandArgs(msg.messageText); + if (!messagequery[0]) { await sendMessage('Please specify a target'); return; }; + const target = await User.initUsername(messagequery[0].toLowerCase()); + if (!target) { await sendMessage(`${messagequery[0]} doesn't exist`); return; }; + await getUserRecord(target); // make sure the user record exist in the database + + if (await user.itemLock()) { await sendMessage('Cannot use an item right now', msg.messageId); return; }; + await user.setLock(); + 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`), + changeItemCount(user, userObj, ITEMNAME), + createTimeoutRecord(user, target, ITEMNAME), + createUsedItemRecord(user, ITEMNAME) + ]); + else { + switch (result.reason) { + case "banned": + await sendMessage(`${target.displayName} is already timed out/banned`, msg.messageId); + break; + case "illegal": + await Promise.all([ + sendMessage(`${user.displayName} Nou Nou Nou`), + timeout(user, 'nah', 60) + ]); + break; + case "unknown": + await sendMessage('Something went wrong...', msg.messageId); + break; + }; + }; + await user.clearLock(); + } +); diff --git a/bot/lib/logger.ts b/bot/lib/logger.ts new file mode 100644 index 0000000..83d8f5b --- /dev/null +++ b/bot/lib/logger.ts @@ -0,0 +1,11 @@ +import kleur from "kleur"; + +const logger = { + err: (arg: string) => console.error(kleur.red().bold().italic('[ERROR] ') + kleur.red().bold(arg)), + warn: (arg: string) => console.warn(kleur.yellow().bold().italic('[WARN] ') + kleur.yellow().bold(arg)), + info: (arg: string) => console.info(kleur.white().bold().italic('[INFO] ') + kleur.white(arg)), + ok: (arg: string) => console.info(kleur.green().bold(arg)), + enverr: (arg: string) => logger.err(`Please provide a ${arg} in the .env`) +}; + +export default logger diff --git a/bot/lib/timeout.ts b/bot/lib/timeout.ts index dc60589..8a6d472 100644 --- a/bot/lib/timeout.ts +++ b/bot/lib/timeout.ts @@ -1,4 +1,5 @@ -import { logger, streamerApi, streamerId, streamerUsers } from ".."; +import { streamerApi, streamerId, streamerUsers } from ".."; +import logger from "./logger"; import { User } from "../user"; type SuccessfulTimeout = { status: true };