我试图设计一个允许用户使用特定命令调用机器人的命令,并让机器人读取用户传入的整个字符串。
这里的问题是,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即一个海绵宝宝meme。
无论如何,当调用命令时,只有第一个单词被带入
//In discord chat window
$sarcastify This program works
//Response
tHiS
Discord机器人有没有办法接受整个字符串进行解析?
答案 0 :(得分:0)
我不完全确定Discord.NET API如何处理参数名称(超出单个参数),但我知道当discord读入命令参数时,它会将它们存储在名为'的数组中。参数数量'可以像普通的字符串数组一样访问和使用。
所以,如果你跑了
$sarcastify this program works
然后在命令函数内:e.Args [0] ="这",e.Args [1] =" program",e.Args [2] =&# 34;作品" e.t.c
因此,如果您希望输入为一个字符串,我们可以在数组上使用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
将产生所需的输出:tHiS pRoGrAm WoRkS
:)