通过Python发送即时消息(MSN)

2 投票
3 回答
678 浏览
提问于 2025-04-16 00:52

好的,我知道这个问题已经有很多人问过了,但我一直在找,还是没找到一个靠谱的答案,不想用jabber或者更复杂的东西。(对使用jabber的人没有冒犯的意思,只是我不想要那些额外的东西)

我现在用的是msnp和twisted.words,我只是想发送和接收消息,之前看了很多例子,但都没能成功,而且msnp的文档也很差。

我更喜欢用msnp,因为它需要的代码少,我不想要太复杂的东西。

用这段代码我可以登录,并查看在线的朋友(但不能给他们发消息):

import msnp
import time, threading



msn = msnp.Session()
msn.login('XXXXXXX@hotmail.com', 'XXXXXX')
msn.sync_friend_list()

class MSN_Thread(threading.Thread):
    def run(self):
        msn.start_chat("XXXXXXX@hotmail.com") #this does not work
        while True:
            msn.process()
            time.sleep(1)



start_msn = MSN_Thread()
start_msn.start()

我希望我说得够清楚,已经很晚了,我的脑子在经历了这么多msn的挫折后有点混乱。

补充一下:因为msnp似乎非常过时,有没有人能推荐一些简单的例子,告诉我该怎么做?我不需要那些需要其他账户的复杂东西。

3 个回答

0

看起来 papyon 是一个正在维护的 pymsn 库的分支,目前被 telepathy-butterfly 和 amsn2 使用。

papyon 是一个 MSN 客户端库,它的目的是把 MSN 协议那些复杂的细节给简化掉。它是一个不再维护的 pymsn MSN 库的分支。papyon 使用 GLib 的主事件循环来以异步的方式处理网络事件。

0

你正在使用一个在2004年就被放弃的库,所以我不太确定msnp是否还能用来在MSN上聊天。
不过,我建议你试试:

while True:
     msn.process(chats = True)
     time.sleep(1)

使用联系人ID,而不是电子邮件地址。

contacts = msn.friend_list.get_friends()
contact_id = contacts.get_passport_id() 

你的代码只是开始了聊天,但并没有发送任何内容;你需要添加发送消息的代码。
可以看看 send_message 方法,在这个教程里。

0

还有一种叫做xmpp的东西,它是用来支持gmail的。

撰写回答