Skype bot(从VB翻译)无效

时间:2017-02-10 21:29:22

标签: c# vb.net bots skype

我在youtube上关注如何创建一个简单的Skype机器人的教程。它是用VB编写的,凭借我有限的知识,我尽力在C#中重新创建它 我偶然发现了"处理"我只能假设它与C#中的eventhandler有关。

这是我到目前为止所获得的代码,但是当我从另一个Skype帐户发送消息时,它没有回应。我已经确保接受允许使用第三方软件的Skype上的小弹出窗口。

public partial class Form1 : Form
{
    Skype oSkype = new Skype();
    string trigger = "!";

    public Form1()
    {
        InitializeComponent();
        oSkype.Attach(7, false);
        oSkype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(oSkype_MessageStatus);
    }


    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void oSkype_MessageStatus(ChatMessage pMessage, TChatMessageStatus Status)
    {
        if (Status == TChatMessageStatus.cmsReceived || Status == TChatMessageStatus.cmsSent)
        {
            string msg = pMessage.Body;
            Chat c = pMessage.Chat;

            if (msg.StartsWith(trigger))
            {
                listBox1.Items.Add(DateTime.Now.ToLongTimeString() + ": " + pMessage.Sender.Handle + " sent you a message");
                msg = msg.Remove(0, 1).ToLower();


                if (msg == "test")
                {
                    c.SendMessage("Test");
                }
                else
                {
                    c.SendMessage("Unrecognizable command.");
                }
            }
        }
    }
}

我所遵循的教程中的代码改为:

oSkype_MessageStatus(pMessage as ChatMessage, Status as TChatMessageStatus) Handles oSkype.MessageStatus

最接近我在c#中实现它的方法是将void添加到公共Form1()中的事件处理程序中,您可以在我的代码中看到它。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我使用COM Skype机器人已经有一段时间了,但你的代码似乎还不错。

尽管如此,我建议你转向机器人的现代方法。请查看新的Microsoft Bot Framework

答案 1 :(得分:0)

较新的Skype版本不支持Skype4Com的聊天功能。它们在2013-2014之间的某个地方被弃用。

来自Skype的博文Feature evolution and support for the Skype Desktop API

  

我很高兴地分享我们将扩展对两个最广泛使用的功能的支持 - 呼叫记录和与硬件设备的兼容性 - 直到我们确定备选方案或退出当前解决方案。 虽然通过第三方应用程序聊天,但会停止按以前的方式工作。