2017-08-15 86 views
0

我在設計一個命令,允許用戶使用特定命令調用bot,並讓bot在用戶傳入的整個字符串中讀取使用「多個」參數創建Discord-Bot命令

這裏的問題是,不和諧機器人只接收命令後面的第一個單詞,而忽略其餘所有內容。

commands.CreateCommand("sarcastify").Parameter("input", ParameterType.Multiple).Do(async (e) => 
     { 

      String userInput = e.GetArg("input"); 
      String output = sarcastify(userInput); 

      await e.Channel.SendMessage(output);    

     }); 

如果你不能告訴我在做一個命令,允許用戶請求輸入文本的「諷刺」的版本,AKA一個海綿米姆。

不管怎麼說,當命令被調用時,只有第一個字是採取

//In discord chat window 
$sarcastify This program works 


//Response 
tHiS 

有沒有什麼辦法了不和諧的機器人承擔解析整個字符串?

回答

0

我不完全確定Discord.NET API如何處理參數名稱(超出單個參數),但我知道當不一致讀入命令參數時,它將它們存儲在名爲'Args'的數組中可以像普通的字符串一樣被訪問和使用。

所以如果運行

$sarcastify this program works 

則命令函數內:e.Args [0] = 「這個」,e.Args [1] = 「節目」,e.Args [2] = 「工程」等

所以,如果你想輸入作爲一個字符串,我們可以只使用陣列上的string.join()方法,讓你的代碼看起來像這樣:

commands.CreateCommand("sarcastify") 
    .Parameter("input",ParameterType.Multiple) 
    .Do(async (e) => 
    { 
     String userInput = string.Join(" ", e.Args); 
     String output = sarcastify(userInput); 
     await e.Channel.SendMessage(output);    
    }); 

有了這個輸入代碼:

$sarcastify this program works 

將產生所需的輸出:該程序作品

:)