!prefix
Komenda czatu: PrefixCommand
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:
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"
.
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