使用"多个"创建Discord-Bot命令参数

时间:2017-08-15 13:17:41

标签: c# discord discord.net

我试图设计一个允许用户使用特定命令调用机器人的命令,并让机器人读取用户传入的整个字符串。

这里的问题是,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机器人有没有办法接受整个字符串进行解析?

1 个答案:

答案 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

:)