我目前正在研究一个不和谐机器人,我试图在你输入内容时发出命令,机器人会回复给你,只有没有说出来的部分。正如你在这里看到的,我使用了子串。似乎当下载的消息变成一个字符串时,它的功能就像一个。 当我把命令置于不和中时,它就是行不通的。我没有收到错误消息。它只是没有回应。
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);
});
}
答案 0 :(得分:0)
下载邮件时,它会返回Message[]
数据类型。并且您无法直接将其转换为字符串以获取消息。
相反,使用e.Args[0]
,它基本上返回一个string
数据类型,它包含没有命令的消息。
例如:我的命令中有一个代码,string x = e.Args[0];
,我输入'!说出这个'。 "这"将是x
的价值。
如此有效,你甚至不需要将它子串起来!你真正要做的只是string message_a = e.Args[0];
并让它直接发送回message_a
!
编辑:
现在,要允许机器人在.Do(async...
后面输入输入,请添加.Parameter("user", ParameterType.Unparsed)
。这允许您的机器人从用户那里获取额外的输入。