蓝天,小湖,湖水中一方小筑

一个echobot,哈哈

那天在网上看到有人放出一个 gtalk 的聊天机器人,可以用来查字典,感觉有些好玩,自己也想玩玩,于是,开始吧

这种小玩意,当然是用 python 做啦,又快又好玩,8过也从另一方面说明我很懒,哈哈。在网上找了一下,发现 python 关于 XMPP 协议的模块有两个,一个是 sf(http://xmpppy.sf.net) 上的,另一个是某单独网站(http://pyxmpp.jajcus.net)上的,本来想用后面一个,但是用它的例子连接 gtalk 的时候,总告诉我说木有 TLS 认证,总让我很FT,于是转向 sf 上的那个了。 先是看它自己带的例子,没有一点悬念的看不懂,继续 google ,终于在某些论坛上看到使用这个包的例子,一路照抄,抄的结果就是能够发消息了,短短的几行,真是简单啊。代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import xmpp

conn = xmpp.Client('gmail.com', debug=[])
conn.connect(server=('talk.google.com', 5223))
conn.auth('########@gmail.com', '**********', 'Test')
conn.sendInitPresence()
conn.send(xmpp.Message('@gmail.com', 'Test'))

哈哈,简单吧,于是我的 gtalk 下午收到了N多 Test --!!! 光能发也不行啊,还要能收,要是按这样的东西只能做个发消息器,或者有另一个名字,垃圾消息发送器 ^^,但是 google 到的网页上木有说,只好去看它的例子了,有了这个小东西的基础,发现它的程序还是满好懂的,看了一下,它收消息的函数是自己写的,然后用了一个 RegisterHandler 注册,找到了就依样画吧。看了看它例子中的消息处理函数,好烦,还有编码判断什么的,统统删掉,最后就直接把收到的消息回传,试了试,成,于是,一个新的 echobot 诞生,哈哈。代码嘛,就在下面:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import xmpp

def process_msg(conn, msg):
    text = msg.getBody()
    user = msg.getFrom()
    conn.send(xmpp.Message(user, text))

def StepOn(conn):
    try:
        conn.Process(1)
    except KeyboardInterrupt: return 0
    return 1

def GoOn(conn):
    while StepOn(conn): pass

conn = xmpp.Client('gmail.com', debug=[])
conn.connect(server=('talk.google.com', 5223))
conn.RegisterHandler('message', process_msg)
conn.auth('#######', '*******', 'Test')
conn.sendInitPresence()
conn.send(xmpp.Message('$$$$$$$@gmail.com', 'Test'))
GoOn(conn)

看看,是不是比我说的还要简单。正在考虑给伊加上些什么功能 ^_^