Skype用の大きなアプリ(Skype PWN4G3)を作成しました。その機能の1つは、次のコード行です。
//コントロールの
private void botOn_Click(object sender, EventArgs e)
{
if (toolStripLabel5.Text == "Not attached")
{
MessageBox.Show(notAttached, "Skype Pwnage - Info!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
botStop = false;
skype.Attach(7, false);
skype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(skype_MessageStatus);
botOn.Text = "Running";
botOn.Enabled = false;
botOff.Enabled = true;
}
}
private void botOff_Click(object sender, EventArgs e)
{
botStop = true;
botOn.Text = "Enable";
botOn.Enabled = true;
botOff.Enabled = false;
}
//働き
private void skype_MessageStatus(ChatMessage msg, TChatMessageStatus status)
{
if (botStop == true)
{
}
else
{
try
{
string command = msg.Body.Remove(0, trigger.Length).ToLower();
string[] lines = richTextBox4.Text.Split('\n');
foreach (string ln in lines)
{
string[] commands = ln.Split(':');
if (radioButton6.Checked == true)
{
if (command.Contains(commands[0]))
{
listBox2.Items.Add(DateTime.Now +"> "+ commands[0]);
skype.SendMessage(msg.Sender.Handle, string.Format(commands[1]));
break;
}
}
if (radioButton4.Checked == true)
{
if (command == commands[0])
{
listBox2.Items.Add(DateTime.Now + "> " + commands[0]);
skype.SendMessage(msg.Sender.Handle, string.Format(commands[1]));
break;
}
}
}
}
catch (Exception err0)
{
}
}
}
今私の問題は、このコードがうまく機能し、特定の単語を言うと自動的に返信することです。しかし、それは非常に奇妙な演技です。Skypeウィンドウを最小化してボットを起動し、動作させると、停止して起動するか、ラジオボタンを[正確]から[含む]に変更するまではうまく機能します。次に実行すると、2回応答します。次に、上記をもう一度実行すると、3回応答します。
もう1つの非常に奇妙な問題は、Skypeウィンドウを開いて自分の側からメッセージを表示すると、メッセージがすべて再送信されることです。なぜですか?
そして、誰かが私がこれを正しく停止/開始する方法を知っているなら、それは素晴らしいでしょう。また、チャットグループからのメッセージをリッスンせず、PMのみがチャットをリッスンしてから、User.Handleに送信するようにする方法を知っている場合は、送信する方法がない限り、メッセージが送信された場所でチャットします。