Discord Bot [C#]不执行命令

时间:2017-02-05 10:04:02

标签: c# bots discord

我开始写一个Discord机器人,但我已经设法遇到了问题。我几乎只是编写了he所写的内容,并进行了一些不会对程序造成太大影响的微小更改。我有2个类,Main类只获取机器人的令牌,然后使用

创建机器人
int

这是MyBot.cs:

MyBot bot = MyBot(token)

它确实连接,Bot确实上线了。这是我的控制台中的输出:

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

namespace Coding_Bot
{
    class MyBot
    {
        DiscordClient discord;
        String botToken;

        public MyBot(String tempToken)
        {

            botToken = tempToken;
            discord = new DiscordClient(x =>
            {
                x.LogLevel = LogSeverity.Info;
                x.LogHandler = Log;
            });
            Console.WriteLine("[BOT] Connecting...");
            discord.ExecuteAndWait(async () =>
            {
                await discord.Connect(botToken, TokenType.Bot);
            });


            discord.UsingCommands(x =>
            {
                x.PrefixChar = '.';
                x.AllowMentionPrefix = true;
            });

            var commands = discord.GetService<CommandService>();

            commands.CreateCommand("info").Do(async (e) =>
            {
                Console.WriteLine("!info executed");
                await e.Channel.SendMessage("Coding Bot");
            });
        }

        private void Log(object sender, LogMessageEventArgs e)
        {
            Console.WriteLine("[BOT] " + e.Message);
        }
    }
}

当我现在在#general中键入.info时,没有任何反应。控制台中没有任何内容,#general中没有任何内容。 我已经查看了this,但它没有解决我的问题

编辑:我知道我应该使用CommandHandler类而不只是将所有命令放在那里。我不会在将来这样做,但这只是为了测试。

2 个答案:

答案 0 :(得分:2)

我知道这是愚蠢的,但你有机会发布机器人的权限吗? (这发生在我身上。)

答案 1 :(得分:2)

我将你的代码复制到我的一个测试机器人并稍微更改了一下,我的机器人能够连接,只是它没有响应命令。
这些是我改变的:

第一次更改

MyBot bot = new MyBot(token); //instead of MyBot bot = MyBot(token);

我改变了,因为我收到了这个错误:enter image description here

第二次更改:机器人没有响应命令

Console.WriteLine("[BOT] Connecting...");
            discord.ExecuteAndWait(async () =>
            {
                await discord.Connect(botToken, TokenType.Bot);
            });

以上内容放在代码的错误位置,所以我把它移到

下面
commands.CreateCommand("info").Do(async (e) =>
        {
            Console.WriteLine("!info executed");
            await e.Channel.SendMessage("Coding Bot");
        });

所以最后它会放在这里:enter image description here

其他详细信息:检查.NET框架版本,测试此代码时使用4.6.2,API Discord.NET版本为0.9.6

如果问题仍然存在,您可以在此处寻求帮助:https://discord.gg/JBp6gSN

轻微注意
最近,最新版本的Discord.NET出版了,v1.0.0。它涉及从v1到v0.9.6的重大更改,使所有内容都基于异步运行。如果这个问题给你带来很多麻烦,你可以通过使用Discord.NET v1轻松逃避这种情况。