【发布时间】:2012-04-05 04:02:16
【问题描述】:
我为 Skype 制作了一个名为 (Skype PWN4G3) 的大型应用程序,其中一个功能是以下代码行:
//控件的
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 次,以此类推,
另一个非常奇怪的问题是,一旦您打开 Skype 窗口并从您身边查看消息,它就会再次重新发送所有消息。知道为什么吗?
如果有人知道我如何正确地停止/启动它,那就再多做一个,那就太棒了。如果你知道如何做到这一点,那么它就不会收听来自聊天组的消息,只有 PM 会很棒,因为现在它会收听聊天然后发送到 User.Handle 除非我可以通过某种方式让它发送到在发送消息的地方聊天。
【问题讨论】: