!prefix

Komenda czatu: PrefixCommand

Komenda prefix pozwala na zmianę prefiksu używanego przez bota na danym kanale. Jest dostępna tylko dla moderatorów i właściciela kanału (broadcastera).

Działanie komendy:

  1. Sprawdzenie uprawnień (guard):

    • Jeśli użytkownik jest broadcasterem lub moderatorem, może wykonać komendę.

    • W przeciwnym razie komenda jest odrzucana z komunikatem: "You do not have permission to execute this command".

  2. Wykonanie komendy (execution):

    • Pobierana jest treść wiadomości.

    • Nowy prefiks odczytywany jest jako drugie słowo w wiadomości.

    • Jeśli użytkownik nie podał nowego prefiksu, bot odpowiada: "You need to specify a prefix".

    • W przeciwnym razie bot informuje o zmianie: "Prefix changed to <nowy_prefiks>".

    • Nowy prefiks jest zapisywany w ChannelOptionsProvider dla danego kanału.

Przykłady użycia:

  • !prefix ? → Zmieni prefiks na ?.

  • !prefix → Zwróci błąd: "You need to specify a prefix".

  • !prefix ? (wykonane przez zwykłego widza) → Zwróci błąd: "You do not have permission to execute this command".

Uwagi:

  • Komenda nie sprawdza poprawności prefiksu

Kod:

import { 
    /* Główny dekorator i Moduł */
    ChatCommand, CommandsModule,
    /* Implementowane interfejsy i zwracane wartości */
    ChatCommandExecution, ChatCommandExecutionGuard, ChatCommandExecutionGuardAvaliableResults,
    /* Dekoratory wstrzykujące dane */
    MessageUser, OptionsProvider, Mess,
    /* Wstrzykiwane wartości z dekoratorów */
    ChatterUser, ChannelOptionsProvider, TwitchChatMessage
} from "@tfxjs/tfxjs";

@ChatCommand(CommandsModule.forFeature({
    name: 'ChangePrefixCommand',
    keyword: 'prefix'
}))
export default class PrefixCommand implements ChatCommandExecution, ChatCommandExecutionGuard {
    guard(
        @MessageUser() chatter: ChatterUser,
    ): ChatCommandExecutionGuardAvaliableResults {
        if (chatter.isBroadcaster() || chatter.isModerator()) return { canAccess: true };
        return { canAccess: false, message: 'You do not have permission to execute this command'};
    }

    async execution(
        @OptionsProvider() options: ChannelOptionsProvider,
        @Mess() message: TwitchChatMessage
    ) {
        console.log('ChangePrefixCommand executed');
        const messageContent = message.getText();
        const newPrefix = messageContent.split(' ')[1];
        if (!newPrefix) {
            message.reply('You need to specify a prefix');
            return;
        }
        message.reply(`Prefix changed to ${newPrefix}`);
        options.setChannelOptions(message.getBroadcasterId(), {
            ...options,
            prefix: newPrefix
        })
    }
}

Last updated