我试图使用Skype4Py
创建一个基本的Skype机器人并遇到了相当严重的错误。我正在使用32位Python 2.7.8的64位Windows 7。已安装,以及最新版本的Skype4Py。
我的主要要求是机器人概述5
个不同的Skype聊天:四个用户聊天,四个用户和一个共同聊天,所有四个用户都参与其中。为此,我编写了两个不同的函数来处理个人回复和群聊:
class SkypeBot(object):
def __init__(self):
self.skype = Skype4Py.Skype(Events=self)
self.skype.Attach()
self.active_chat = find_conference_chat()
def MessageStatus(self, msg, status):
if status == Skype4Py.cmsReceived:
if msg.Chat.Name == self.active_chat.Name:
msg.Chat.SendMessage(respond_to_group(msg))
else:
msg.Chat.SendMessage(respond_to_individual(msg))
bot = SkypeBot()
上面的代码(还有更多内容,但它的核心是写下来的)应该回答任何用户私下或群聊中发送的每条消息。
然而,这是一个问题。通常,这段代码工作得很好。机器人响应每个用户以及群聊。然后,每隔一段时间(每10次聊天),机器人停止响应个别消息。函数MessageStatus
根本不会触发,这让我觉得可能还有其他需要捕获的事件。所以我在机器人中添加了一个通用事件捕手:
def Notify(self, notification):
print "NOTIFICATION:"
print notification
print "=========================="
此代码的唯一目的是查看我是否遗漏了任何事件。所以我等了一下,当机器人没有响应时,我检查了该函数的打印输出。
MessageStatus
事件的通知。CHAT **** ACTIVITY_TIMESTAMP ******
。没有收到聊天消息的通知,因此没有回复的消息。当我手动点击我的Skype客户端并将我的窗口集中在收到的消息上时,MessageStatus
evend终于被解雇了,机器人响应了,但这太迟了。
我的问题有几个部分:
Skype4Py
完美无缺,我的代码可以正常工作吗?答案 0 :(得分:1)
不幸的是,这可能是Skype API中的一个错误。 此help post表示正在撤消对API的支持,并说:
重要提示:正如本博客文章中所述,由于技术原因 我们正在改进Skype的体验,一些功能 API将停止使用Skype for Desktop。例如, 使用API传递聊天消息将停止工作。然而, 我们将扩展对两个最广泛使用的功能的支持 - 通话记录和与硬件设备的兼容性 - 直到我们 确定替代选项或退出当前解决方案。