2017-08-15 74 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 

将产生所需的输出:该程序作品

:)