C#中使用Discord.Net完成一個簡易的斜線指令(Slash Commands)

在這篇文章中,我們將介紹如何使用C#和Discord.Net來建立一個簡單的斜線指令(Slash Commands)功能。斜線指令是Discord的一項強大功能,允許用戶直接在訊息框中輸入斜線命令,而不必使用傳統的命令前綴。

註冊事件

首先,我們需要在C#中設置Discord Bot並註冊所需的事件。在這個步驟中,我們將設置機器人的就緒事件和互動事件,以便讓機器人能夠正確地響應用戶的指令。


private DiscordSocketClient Discord_Bot = new DiscordSocketClient();

public void Discord_註冊事件()
{
    Discord_Bot.Ready += Client_Ready;
    Discord_Bot.SlashCommandExecuted += SlashCommandHandler;
}

註冊斜線指令事件

在就緒事件中,我們註冊了斜線指令到伺服器。這包括建立一個指令建構器(Slash CommandBuilder),設置指令的名稱和描述,然後將指令註冊到伺服器。


public async Task Client_Ready()
{
    // 在機器人準備就緒時,註冊 Slash Command 到伺服器
    var guild = Discord_Bot.GetGuild(伺服器ID);

    // 建立 Slash CommandBuilder
    var helloCommand = new SlashCommandBuilder()
        .WithName("hello")  // 指令名稱
        .WithDescription("Say hello!");  // 指令描述

    try
    {
        // 註冊指令到伺服器
        await guild.CreateApplicationCommandAsync(helloCommand.Build());
    }
    catch (ApplicationCommandException exception)
    {
        Console.WriteLine("Error registering slash command: " + exception.Message);
    }
}

互動事件

最後,在互動事件中,我們處理用戶發送的斜線指令。這裡我們檢查指令的名稱,並根據不同的指令執行相應的操作,這裡我們示範了對 "/hello" 指令的回應。


private async Task SlashCommandHandler(SocketSlashCommand command)
{
    // 根據指令名稱執行相應的操作
    switch (command.CommandName)
    {
        case "hello":
            // 使用 RespondAsync() 回覆,並設置 ephemeral 參數為 true,只有發送指令的人能看到
            await command.RespondAsync($"Hello, {interaction.User.Mention}!", ephemeral: true);
            break;
    }
}

這樣,我們就完成了一個簡單的C# Discord Bot,可以接受並響應斜線指令了。希望這篇文章對你有所幫助,讓你更好地了解如何使用Discord.Net來實現這一功能。

留言