Skype 机器人(翻译自 VB)无法正常工作

Skype bot (translation from VB) not working

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

中的事件处理程序有关

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

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 添加到 public Form1() 中的事件处理程序,您可以在我的代码中看到它。

提前致谢!

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

尽管如此,我还是建议您在机器人上采用现代方法。请查看新的 Microsoft Bot Framework

较新的 Skype 版本不支持 Skype4Com 的聊天功能。它们在 in-between 2013-2014 的某处被弃用。

来自 Skype 的博客 post Feature evolution and support for the Skype Desktop API:

I’m happy to share that we will be extending support for two of the most widely used features – call recording and compatibility with hardware devices – until we determine alternative options or retire the current solution. Although chat via third party applications, will cease to work as previously communicated.