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.
我正在关注 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.