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という名前の3人を選択すると、選択したリストの最初の人はJimです。を使用%name%
した場合、Jimへのメッセージでは「Jim」に正しく置き換えられますが、TimとDerpへのメッセージにも%name%
、名前が文字列に置き換えられる代わりに「Jim」が含まれます。
編集:
ループ内にvalue
、およびifステートメントを配置することを知っています。body
しかし、私はメッセージを入力する必要があるのは一度だけであることを望みます。それがマスメッセージの要点です。