Skype4Py:messageStatusChanged不总是调用

2024-10-04 01:22:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Skype机器人连接到一个在X(Linux)中工作的Skype实例。问题是,当传入消息时,messageStatusChanged事件并不总是被触发。在大多数情况下都是这样,但有时信息只是“丢失”。我可以看到它们出现在Skype客户端中,但是Skype4Py的事件由于某种原因没有被触发。这些消息所包含的内容没有任何区别。在

为什么会这样?在


Tags: 实例信息消息客户端内容linux事件情况
1条回答
网友
1楼 · 发布于 2024-10-04 01:22:47

没有解决办法,但我进一步调查了一下,因为我在问自己同样的问题。当您看到应用程序中缺少messageStatusChanged时,可以使用dbus monitor查看传入消息是否已通过dbus发出信号。在

$ dbus-monitor "interface=com.Skype.API.Client"

我的印象是,如果Skype在较长时间内“沉默”了很多次,那么第一次状态改变往往会消失。在

具体地说,dbus监视器中会出现“first”消息(是的,成对显示,不确定原因):

^{pr2}$

上面的消息不会触发messageStatusChanged,但下一条消息会触发(同样是成对的):

method call sender=:1.1036 -> dest=:1.1028 serial=5090 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
   string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696353"
method call sender=:1.1036 -> dest=:1.1232 serial=5091 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
   string "CHAT #thesender/$thereceiver;2c328ad79b074208 ACTIVITY_TIMESTAMP 1362696353"
method call sender=:1.1036 -> dest=:1.1028 serial=5092 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
   string "CHATMESSAGE 3535369 STATUS RECEIVED"
method call sender=:1.1036 -> dest=:1.1232 serial=5093 path=/com/Skype/Client; interface=com.Skype.API.Client; member=Notify
   string "CHATMESSAGE 3535369 STATUS RECEIVED"

在第二个例子中,它不仅显示了从thesenderthereceiverCHAT,而且它实际上显示了序列号为3535369和{}的{}是{}。只有后者似乎会触发messageStatusChanged。在

问题是:第一条消息是否应该创建CHATMESSAGE {serial} STATUS RECEIVED?如果是:这是Skype客户端的一个错误吗?如果否:如果CHATMESSAGE仅在更新已建立的聊天时发送,您是否应该监听其他事件?在

我还不知道答案,但也许这有帮助。在

相关问题 更多 >