我正在为Skype 机器人做一个消息循环,这意味着我可以轻松地做广告/群发消息。但是,在循环中的第一个名称字符串被类中的名称替换后,它将仅使用该名称,而不会在下一个循环中替换新名称。
代码:
if(listView2.SelectedItems.Count<=0)
return;
string value="Hi %name%!";
string body="";
if(Program.InputBox("New Message", "Body of the message:", ref value)==DialogResult.OK) {
body=value;
}
foreach(ListViewItem i in listView2.SelectedItems) {
String rawID=i.SubItems[7].ToString();
String[] splitID=rawID.Split('}');
String[] ID=splitID[0].Split(new char[] { '{' });
body=body.Replace("%handle%", SkypeUser.Users[Convert.ToInt32(ID[1])].Handle);
body=body.Replace("%name%", SkypeUser.Users[Convert.ToInt32(ID[1])].Name);
body=body.Replace("%status%", SkypeUser.Users[Convert.ToInt32(ID[1])].Status);
body=body.Replace("%country%", SkypeUser.Users[Convert.ToInt32(ID[1])].Country);
body=body.Replace("%mood%", SkypeUser.Users[Convert.ToInt32(ID[1])].Mood);
body=body.Replace("%about%", SkypeUser.Users[Convert.ToInt32(ID[1])].About);
if(!(body==String.Empty)) {
skype.SendMessage(SkypeUser.Users[Convert.ToInt32(ID[1])].Handle, body);
}
}
如果我选择三个人,分别是 Jim、Tim 和 Derp,那么所选列表中的第一个人就是 Jim。如果我使用%name%
,它将在给 Jim 的消息中正确替换为“Jim”,但给 Tim 和 Derp 的消息也将包含“Jim”,而不是字符串替换%name%
为他们的名字。
编辑:
我知道在循环中放置value
和body
if 语句;但我希望只需要输入一次消息。这就是大众信息的全部意义所在。