Skype4Py 消息状态未持续触发



我正在尝试使用Skype4Py制作一个基本的Skype机器人,但遇到了一个相当严重的错误。我正在使用 64 位 Python 7 的 32 位 Windows 2.7.8。安装,以及最新版本的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完美运行,我的代码应该工作正常吗?
  • 是否有其他人遇到过某个事件未触发的此错误?
  • 如果您遇到类似的错误,是否已解决?如果没有,您是否至少发现了如何始终如一地重现此问题?我什至无法调试它,因为它突然出现并且突然出现......

不幸的是,这可能是Skype API中的一个错误。此帮助帖子表明正在撤销对该 API 的支持,并指出:

重要提示:正如这篇博文中所传达的,由于技术 我们正在对 Skype 体验进行改进,其中一些功能 该 API 将停止与桌面版 Skype 一起使用。例如 使用 API 传递聊天消息将停止工作。然而 我们将扩展对两个最广泛使用的功能的支持 – 通话录音和与硬件设备的兼容性 – 直到我们 确定替代选项或停用当前解决方案。

相关内容

  • 没有找到相关文章

最新更新