2017-07-19 21 views
-2

所以我有一個機器人,我希望它調用我從代碼中創建的命令。我試過e.Channel.SendMessage(「!command」),其中!爲前綴和「命令」是如何讓不一致的機器人調用自己的命令

private newCommand() 
{ 
    cmd.CreateCommand("command") 
     .Do(async (e) => 
     { 
     // 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?? 
       await e.Channel.SendMessage("!command"); // doesn't do anything 
      } 
     }; 

有什麼辦法,我可以做到這一點,而不必從我的命令重複的代碼粘貼到的messageReceived部分?

回答

1

擴大範圍,即將命令代碼從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(); 
    } 
}; 
+1

啊哈!是的,這是非常有意義的。而不是在一個不可調用的函數中爲不一致定義...在一個可調用的函數中定義一個東西...:') –

+0

是的,這有點讓我們有時候會把它們掛起來。堅持下去。 – Cory