Discord子串消息

我正在制作一个不和谐的机器人,我试图在你输入内容时发出一个命令,机器人会回复给你,只有没有说出来的部分 . 正如你在这里看到的,我使用了子串 . 似乎当下载的消息变成一个字符串时,它的功能就像一个 . 当我把命令置于不和中时,它就是行不通的 . 我没有收到错误消息 . 它只是没有回应 .

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);
            });
    }

回答(1)

2 years ago

下载消息时,它返回 Message[] 数据类型 . 并且您不能直接将其转换为字符串以获取消息 .

相反,使用 e.Args[0] ,它基本上返回 string 数据类型,并且它包含带命令的消息 .
例如:我的命令中有一个代码, string x = e.Args[0]; ,我输入'!say this' . "this"将是 x 的值 .

如此有效,你甚至不需要将它子串起来!所有你真正要做的就是 string message_a = e.Args[0]; 并让它直接发回 message_a 到 Channels !

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