C# 如何让discord机器人调用自己的命令

C# 如何让discord机器人调用自己的命令,c#,bots,discord,C#,Bots,Discord,所以我有一个机器人,我希望它调用我在代码中创建的命令。我试过e.Channel.SendMessage(“!command”),在哪里!是前缀,“command”是命令 private newCommand() { cmd.CreateCommand("command") .Do(async (e) => { // Some command stuff } } 因此,如果我或其他人键入,命令将正常执行!命令,但如何让

所以我有一个机器人,我希望它调用我在代码中创建的命令。我试过e.Channel.SendMessage(“!command”),在哪里!是前缀,“command”是命令

private newCommand()
{
    cmd.CreateCommand("command")
        .Do(async (e) =>
        {
        // Some command stuff
        }
}
因此,如果我或其他人键入,命令将正常执行!命令,但如何让bot本身从代码中调用该命令

比如说,我有以下代码:

discord.MessageReceived += async (s, e) =>
        {
            if (!e.Message.IsAuthor && e.Message.User.Id == blah)
            {
                await e.Channel.SendMessage("Yo man");

                // how do I perform command??
                await e.Channel.SendMessage("!command"); // doesn't do anything
            }
        };

有什么方法可以做到这一点,而不必将命令中的重复代码粘贴到MessageReceived部分?

扩展范围,即从anon函数中取出命令代码,并在更高的范围中定义它,以便您可以从两个位置调用它

private newCommand()
{
    cmd.CreateCommand("command")
        .Do(async (e) =>
        {
            ExecuteCommand();
        }
}
private void ExecuteCommand()
{
    // some command stuff
}
然后,从其他方法调用它:

discord.MessageReceived += async (s, e) =>
{
    if (!e.Message.IsAuthor && e.Message.User.Id == blah)
    {
        await e.Channel.SendMessage("Yo man");

        // how do I perform command??
        ExecuteCommand();
    }
};

啊哈!是的,这很有道理。而不是在不一致的不可调用函数中定义它。。。在可调用文件中定义内容…:')是的,有时是一些小事让我们心烦意乱。坚持下去。