如何在SkPy中使用SkypeEventLoop接收新消息?

问题描述 投票:0回答:1

文档只说你可以获取所有消息,而不仅仅是新消息 https://skpy.t.allofti.me/guides/messages.html

>>> ch = sk.chats["8:joe.4"]
>>> ch.getMsgs()
[SkypeMsg(id='1453283895457', type='Text', time=datetime.datetime(2016, 1, 20, 9, 58, 15, 341000), ...),
 SkypeMsg(id='1452949957379', type='Text', time=datetime.datetime(2016, 1, 16, 13, 12, 37, 109000), ...), ...]

并且对于Event和loop来说,不涉及消息 https://skpy.t.allofti.me/guides/events.html

from getpass import getpass
from skpy import SkypeEventLoop


class MySkype(SkypeEventLoop):

    def onEvent(self, event):
        print(repr(event))


if __name__ == "__main__":
    sk = MySkype("fred.2", getpass(), autoAck=True)
    sk.subscribePresence() # Only if you need contact presence events.
    sk.loop()

有没有办法使用事件来仅获取新消息(来自任何用户)?

python skype
1个回答
0
投票

MySkype 类(SkypeEventLoop):

def onEvent(自身,事件): if isinstance(事件, SkypeNewMessageEvent): msg = event.msg # 获取消息对象 #print(f"收到来自 {msg.user} 的新消息, Message: {msg.content}") 聊天=消息.聊天 chat_topic = chat.topic if hasattr(chat, 'topic') else "没有主题" print(f"群组:{chat_topic},发件人:{msg.user.name},消息:{msg.content}")

© www.soinside.com 2019 - 2024. All rights reserved.