Discord 对消息进行子字符串化

Discord substringing a message

我目前正在开发一个不和谐的机器人,我试图在你输入一些东西的地方发出一个命令,机器人会回复你,只是没有 !say 部分。正如您在这里看到的,我使用了一个子字符串。似乎当下载的消息变成字符串时,它的功能就不像一个字符串了。 当我将命令置于不和谐状态时,它就是行不通。我没有收到错误消息。就是没反应。

private void RegisterSayCommand()
    {
        commands.CreateCommand("say")
            .Do(async (e) =>
            {
                string messagestosay, message_b;
                int message_sub;
                Message[] message_a;
                message_a = await e.Channel.DownloadMessages(1);
                message_b = message_a.ToString();
                message_sub = message_b.Length;
                messagestosay = message_b.Substring(4, message_sub);

                await e.Channel.SendMessage(messagestosay);
            });
    }

当您下载邮件时,它 returns 是 Message[] 数据类型。而且你不能直接将它转换为字符串来获取消息。

相反,使用 e.Args[0],它基本上是 returns 一种 string 数据类型,并且它包含消息 w/o 命令。
例如:我的命令中有一个代码,string x = e.Args[0];,我输入“!say this”。 "this" 将是 x.

的值

非常有效,您甚至不需要对它进行子字符串化!您真正需要做的就是 string message_a = e.Args[0]; 并让它直接将 message_a 发送回频道!

编辑: 现在让机器人接受输入,在你的 .Do(async... 后面,添加一个 .Parameter("user", ParameterType.Unparsed)。这允许您的机器人从用户那里获取额外的输入。