它说"尝试显式指定类型参数"。我在添加模块异步方面有问题,请尝试制作机器人



我试图用 Discord.NET 包制作一个新的 Discord 机器人,我认为它已经完成了。只有命令代码在等待。现在我不知道这句话是什么,我怎样才能结束它。

我试图将"AddModulesAsync"更改为"AddModuleAsync",但它仍然给出错误。

namespace AsunaBot
{
    class Program
    {
        static void Main(string[] args) => new Program().RunBotAsync().GetAwaiter().GetResult();
        private DiscordSocketClient _client;
        private CommandService _commands;
        private IServiceProvider _services;
        public async Task RunBotAsync()
        {
            _client = new DiscordSocketClient();
            _commands = new CommandService();
            _services = new ServiceCollection()
                .AddSingleton(_client)
                .AddSingleton(_commands)
                .BuildServiceProvider();
            string botToken = "TOKEN_HERE";
            _client.Log += Log;
            await RegisterCommandsAsync();
            await _client.LoginAsync(TokenType.Bot, botToken);
            await _client.StartAsync();
            await Task.Delay(-1);
        }
        private Task Log(LogMessage arg)
        {
            Console.WriteLine(arg);
            return Task.CompletedTask;
        }
        public async Task RegisterCommandsAsync()
        {
            _client.MessageReceived += HandleCommandAsync;
            await _commands.AddModulesAsync(Assembly.GetEntryAssembly());
        }
        private async Task HandleCommandAsync(SocketMessage arg)
        {
            var message = arg as SocketUserMessage;
            if (message is null || message.Author.IsBot) return;
            int argPos = 0;
            if (message.HasStringPrefix("tnt!", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos))
            {
                var context = new SocketCommandContext(_client, message);
                var result = await _commands.ExecuteAsync(context, argPos, _services);
                if (!result.IsSuccess)
                    Console.WriteLine(result.ErrorReason);
            }
        }
    }
}

如果它有效,我可以运行我的机器人来给出一些命令,Discord

感谢@stuartd的回复。我错过了。AdModulesAsync() 还需要一个参数。我在那里写了_services,它运行良好,感谢@Kaynn隐藏我的令牌,我在第一个问题帖子中透露了这一点。新代码如下所示: await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _services);

最新更新