Skype4Py MessageStatus没有持续发射

5xu*_*xum 6 python skype4py

我正在尝试使用基本的Skype机器人Skype4Py并遇到了相当严重的错误.我正在使用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()
Run Code Online (Sandbox Code Playgroud)

上面的代码(还有更多内容,但它的核心是写下来的)应该回答任何用户私下或群聊中发送的每条消息.

但是,有一个问题.通常,这段代码工作得很好.机器人响应每个用户以及群聊.然后,每隔一段时间(每10次聊天),机器人停止响应个别消息.该功能MessageStatus根本不会触发,这让我觉得可能还有其他需要捕获的事件.所以我在机器人中添加了一个通用事件捕手:

    def Notify(self, notification):
        print "NOTIFICATION:"
        print notification
        print "=========================="
Run Code Online (Sandbox Code Playgroud)

此代码的唯一目的是查看我是否遗漏了任何事件.所以我等了一下,当机器人没有响应时,我检查了该函数的打印输出.

  • 通常,当消息到达时,机器人会收到几个通知:聊天消息收到通知,聊天活动时间戳通知和其他一些通知.chatmessage收到的通知是最终触发MessageStatus事件的通知.
  • 在机器人没有响应的情况下,只有一个通知.这是通知CHAT **** ACTIVITY_TIMESTAMP ******.没有收到聊天消息的通知,因此没有回复的消息.

当我手动点击我的Skype客户端并将我的窗口集中在收到的消息上时,MessageStatusevend终于解雇了,机器人响应了,但这太迟了.


我的问题有几个部分:

  • 我的通用代码是否正确?如果能够Skype4Py完美运行,我的代码可以正常工作吗?
  • 有没有其他人遇到这个错误,某个事件没有发生?
  • 如果遇到类似的错误,你解决了吗?如果没有,你至少发现如何始终如一地重现这个问题?我甚至无法调试它,因为它突然出现,无处不在......

Oth*_*ers 1

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

\n\n
\n

重要提示:正如本博客文章中所述,由于我们对 Skype 体验进行的技术改进,API 的某些功能将停止与 Skype 桌面版配合使用。例如,\n 使用 API 传送聊天消息将停止工作。不过,我们将扩展对两个最广泛使用的功能的支持\n \xe2\x80\x93 通话录音以及与硬件设备的兼容性\xe2\x80\x93,直到我们\n 确定替代选项或停用当前解决方案。

\n
\n