diff --git a/.example.env b/.example.env index a464e54..4332de1 100644 --- a/.example.env +++ b/.example.env @@ -1,3 +1,4 @@ +CHANNEL= CLIENT_ID= CLIENT_SECRET= OAUTH_CODE= diff --git a/compose.yml b/compose.yml index 1eee310..8e1898b 100644 --- a/compose.yml +++ b/compose.yml @@ -28,6 +28,7 @@ services: - action: rebuild path: ./src environment: + - CHANNEL=$CHANNEL # These env variables can be removed once the bot has sucessfully run once - CLIENT_ID=$CLIENT_ID - CLIENT_SECRET=$CLIENT_SECRET diff --git a/src/bot.ts b/src/bot.ts index 8f8eb03..d8e78fa 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -3,13 +3,15 @@ import { Bot } from '@twurple/easy-bot' import authProvider from './lib/auth'; import commands from './commands' +const channel = process.env.CHANNEL ?? '' + const bot = new Bot({ authProvider, - channel: "qwerinope", + channel, commands }) -bot.onConnect(async ()=> { +bot.onConnect(async () => { // await authProvider.refreshAccessTokenForUser(238377856) setTimeout(() => { console.log('Bot is ready to accept commands!') diff --git a/src/commands/index.ts b/src/commands/index.ts index e02a8cd..a780d6e 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -8,4 +8,6 @@ import getloot from "./getloot"; import modme from "./modme"; import use from "./use"; -export default [timeout, thank, give, inventory, stats, mbucks, getloot, modme, use] +import aliases from './itemAliases' + +export default [timeout, thank, give, inventory, stats, mbucks, getloot, modme, use, ...aliases] diff --git a/src/commands/itemAliases.ts b/src/commands/itemAliases.ts new file mode 100644 index 0000000..fd509a4 --- /dev/null +++ b/src/commands/itemAliases.ts @@ -0,0 +1,18 @@ +import { createBotCommand } from "@twurple/easy-bot"; + +import { useBlaster, useSilverBullet } from "../lib/items"; +import api from "../lib/api"; + +const blaster = createBotCommand('blaster', async (params, { say, broadcasterId, userId }) => { + const user = await api.users.getUserById(userId) + if (params[0] === undefined) return + await useBlaster(broadcasterId, user!, params[0], say) +}, { aliases: ['blast'] }) + +const silverbullet = createBotCommand('execute', async (params, { say, broadcasterId, userId }) => { + const user = await api.users.getUserById(userId) + if (params[0] === undefined) return + await useSilverBullet(broadcasterId, user!, params[0], say) +}, {aliases: ['silverbullet']}) + +export default [blaster, silverbullet] diff --git a/src/lib/timeoutHelper.ts b/src/lib/timeoutHelper.ts index 75c3a97..057494f 100644 --- a/src/lib/timeoutHelper.ts +++ b/src/lib/timeoutHelper.ts @@ -1,4 +1,4 @@ -import { HelixUser } from "@twurple/api"; +import { ApiClient, HelixUser } from "@twurple/api"; import api, { broadcasterApi } from "./api"; import pb from "./pocketbase"; import { getDBID } from "./userHelper"; @@ -12,22 +12,15 @@ interface statusmessage { export async function timeout(broadcasterid: string, target: HelixUser, duration: number, reason: string): Promise { if (!target) return { status: false, reason: 'noexist' } + const tmpapi = broadcasterApi ?? api // if (target.name === 'qwerinope') return { status: false, reason: 'unknown' } - if (broadcasterApi) { - if (await broadcasterApi.moderation.checkUserBan(broadcasterid, target)) return { status: false, reason: 'banned' } - } else { - if (await api.moderation.checkUserBan(broadcasterid, target)) return { status: false, reason: 'banned' } - } + if (await tmpapi.moderation.checkUserBan(broadcasterid, target)) return { status: false, reason: 'banned' } try { - if (broadcasterApi) { - if (await broadcasterApi.moderation.checkUserMod(broadcasterid, target)) { - await broadcasterApi.moderation.removeModerator(broadcasterid, target) - remodMod(broadcasterid, target, duration) - } - await broadcasterApi.moderation.banUser(broadcasterid, { duration, reason, user: target }) - } else { - await api.moderation.banUser(broadcasterid, { duration, reason, user: target }) + if (await tmpapi.moderation.checkUserMod(broadcasterid, target)) { + await tmpapi.moderation.removeModerator(broadcasterid, target) + remodMod(broadcasterid, target, duration, tmpapi) + await tmpapi.moderation.banUser(broadcasterid, { duration, reason, user: target }) } return { status: true, reason: '' } } catch (err) { @@ -51,8 +44,8 @@ export async function addTimeoutToDB(attacker: HelixUser, target: HelixUser, sou await pb.collection('timeouts').create(timeoutobj) } -function remodMod(broadcasterid: string, target: HelixUser, duration: number) { +function remodMod(broadcasterid: string, target: HelixUser, duration: number, api: ApiClient) { setTimeout(async () => { - await broadcasterApi?.moderation.addModerator(broadcasterid, target) + await api.moderation.addModerator(broadcasterid, target) }, (duration + 3) * 1000) }