(Discord bot 1.0 c#)如何创建一个新类并添加cmds?

(Discord bot 1.0 c#)如何创建一个新类并添加cmds?

问题描述:

你好那里*! (在这里第一次发布,所以PLZ很好:P)(Discord bot 1.0 c#)如何创建一个新类并添加cmds?

所以,我决定在c#(我正在学习c#atm)做一个不和机器人1.0(我正在学习c#atm),我已经得到了一个问题,我不知道如何解决它..

所以,来形容我想要做的就是以下。

我试图让它这样我就可以有x的命令不同的类别,如.say等,而不必他们所有的“命令”下面一个这样它有点更易于使用。

我这些工作的三个脚本,但不能获得第四工作

//启动

using System; 
using System.Threading.Tasks; 
using Discord; 
using Discord.WebSocket; 
using Discord.Commands; 

namespace MyBot 
{ 
public class Program 
{ 
    // Convert our sync main to an async main. 
    public static void Main(string[] args) => 
     new Program().Start().GetAwaiter().GetResult(); 

    private DiscordSocketClient client; 
    private CommandHandler handler; 

    public async Task Start() 
    { 
     // Define the DiscordSocketClient 
     client = new DiscordSocketClient(); 

     var token = "Censored"; 

     // Login and connect to Discord. 
     await client.LoginAsync(TokenType.Bot, token); 
     await client.StartAsync(); 

     var map = new DependencyMap(); 
     map.Add(client); 

     handler = new CommandHandler(); 
     await handler.Install(map); 

     // Block this program until it is closed. 
     await Task.Delay(-1); 
    } 

    private Task Log(LogMessage msg) 
    { 
     Console.WriteLine(msg.ToString()); 
     return Task.CompletedTask; 
    } 
} 
} 

//我的命令处理程序

using System.Threading.Tasks; 
using System.Reflection; 
using Discord.Commands; 
using Discord.WebSocket; 

namespace MyBot 
{ 
public class CommandHandler 
{ 
    private CommandService commands; 
    private DiscordSocketClient client; 
    private IDependencyMap map; 

    public async Task Install(IDependencyMap _map) 
    { 
     // Create Command Service, inject it into Dependency Map 
     client = _map.Get<DiscordSocketClient>(); 
     commands = new CommandService(); 
     _map.Add(commands); 
     map = _map; 

     await commands.AddModulesAsync(Assembly.GetEntryAssembly()); 

     client.MessageReceived += HandleCommand; 
    } 

    public async Task HandleCommand(SocketMessage parameterMessage) 
    { 
     // Don't handle the command if it is a system message 
     var message = parameterMessage as SocketUserMessage; 
     if (message == null) return; 

     // Mark where the prefix ends and the command begins 
     int argPos = 0; 
     // Determine if the message has a valid prefix, adjust argPos 
     if (!(message.HasMentionPrefix(client.CurrentUser, ref argPos) || message.HasCharPrefix('!', ref argPos))) return; 

     // Create a Command Context 
     var context = new CommandContext(client, message); 
     // Execute the Command, store the result 
     var result = await commands.ExecuteAsync(context, argPos, map); 

     // If the command failed, notify the user 
     if (!result.IsSuccess) 
      await message.Channel.SendMessageAsync($"**Error:** {result.ErrorReason}"); 
    } 
} 
} 

//命令

//这是我想要工作的人,但我只得到“未知的命令”作为错误?

using Discord.Commands; 
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Threading.Tasks; 

namespace MyBot.Modules.Public 
{ 
class test : ModuleBase 
{ 
    [Command("say")] 
    [Alias("echo")] 
    [Summary("Echos the provided input")] 
    public async Task Say([Remainder] string input) 
    { 
     await ReplyAsync(input); 
    } 
} 
} 

如果你知道我做错了,请告诉我或冷藏我有关该问题的一些信息,我可以尝试提前修复它:) 谢谢! PS,我很抱歉,如果有这个问题的欺骗,但我不知道该怎么寻找可以找到它

编辑 我被告知“坑metohds(CMDS)在类”,但我将如何去解决这个问题?

答案是继

类(名称)之前加入公共所以这将是

namespace MyBot.Modules.Public 
{ 
    **Public** class test : ModuleBase 
{ 
    [Command("say")] 
    [Alias("echo")] 
    [Summary("Echos the provided input")] 
    public async Task Say([Remainder] string input) 
    { 
     await ReplyAsync(input); 
    } 
} 

}