Xmpptalk 是百合仙子的一个 XMPP(比如 GTalk)多人聊天机器人。只要加该机器人为好友,就可以和其他加该机器人为好友的人聊天。机器人负责转发消息。
首先,强调这篇文章发表是 2012 年 8 月。在此之后可能会更新,所以当你看到这文章的时候,原来的程序可能已经更新不再使用这种方法了,所以请自己考虑清楚每一步。
一个 VPS 是必不可少的,怎么购买 VPS 不是本文谈论的范畴。
- 下载 xmpptalk 的源代码。git clone https://github.com/lilydjwg/xmpptalk
- 不要先运行 scripts/quickinstall.sh!它会毁了你的系统的!使用发行版自带的软件包工具安装下列软件:
- python3.2
- python3.2-dev
- python2.7
- python2.7-dev
- mongodb (安装之后请启动服务,ArchLinux 用户貌似要手动创建 /data/db 目录)
- mercurial (有的发行版里面叫做 hg)
- prosody (如果你不打算使用公共的 XMPP 服务,而自己开一个 XMPP 服务器)
- mongokit (很多发行版里面是没有这个包的,而且由于没有更新,不支持 python3,所以需要用 2to3 转换,后面介绍这个包的详细安装)
- 安装 mongokit。这一段的版本号全部自己变通,因为你看到文章的时候原程序可能已经更新了。wget http://pypi.python.org/packages/source/m/mongokit/mongokit-0.8.tar.gztar xvzf mongokit-0.8.tar.gzcd mongokit-0.8原程序在安装的时候会自动下载 setuptools,但由于需要的版本 0.6c7-py2.7 已经无法下载,目前的版本是 0.6c11-py2.7,所以我们需要手工下载目前版本,并且修改名字为需要的版本。wget -O setuptools-0.6c7-py2.7.egg http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.eggsudo python2 setup.py install下一步是把 python2 的模块转换为 python3。sudo cp -a /usr/local/lib/python2.7/dist-packages/mongokit-0.8-py2.7.egg/mongokit /usr/local/lib/python3.2/dist-packages/sudo 2to3 -w /usr/local/lib/python3.2/dist-packages/mongokit安装好了再去运行 scripts/quickinstall.sh,用 root 权限。
- 配置 config.py,此文件是 Python 语法,请按注释进行配置。一定要修改的地方有 jid、root、salt、database(数据库名字不要 . 等特殊符号)、settings.password。如果要配置 Prosody,机器人的 XMPP 地址要写成自己的 VPS 的域名,等一会配置 Prosody 的时候创建你要的机器人账户。
- 配置 ProsodyProsody 的配置有一点烦人,你还需要在本地电脑上准备好 Pidgin 一类的 xmpp 聊天软件。Prosody 的全局配置文件在 /etc/prosody/prosody.cfg.lua打开后找到allow_registration = false;把 false 修改成 true,在完成新用户注册之后再修改回来。下面代码中斜体的 example.com 表示要修改成自己站点的名字。sudo cp /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.d/example.com.cfg.lua打开 /etc/prosody/conf.d/example.com.cfg.lua,删除下面这行:enabled = false -- Remove this line to enable this host然后修改所有的 example.com 为自己站点的名字。然后用 root 执行:cd /etc/prosody/certsopenssl req -new -x509 -nodes -days 99999 -out "example.com.crt" -keyout "example.com.key"然后一路回车或者填写一些信息。最后重启 Prosody 服务,比较通用的命令是:sudo /etc/init.d/prosody restart当然如果你的发行版提供开关服务的命令,使用它,比如 ArchLinux(SysVInit)的命令是 sudo rc.d restart prosody。
- 创建 XMPP 账户用你的 XMPP 客户端(比如 Pidgin)创建一个新账号,服务器填写你的 VPS 的地址,勾选“在服务器上创建此新账号”。
- 启动 xmpptalk在 xmpptalk 的目录里面,第一次需要初始化数据库,输入:python3 dbman.py然后启动机器人:python3 main.py
至此结束。你还可以配置机器人来达到更多的功能,另外建议开启 Prosody 的加密功能,具体配置可以在 /etc/prosody/prosody.cfg.lua 中找到。
Tips: 如果发现重新启动服务器之后 mongodb 迟迟不肯工作,试试看删除 /var/lib/mongodb/mongod.lock,然后重新启动 mongodb 服务即可。
安装 SleekXMPP 的命令放在下面:
git clone https://github.com/fritzy/SleekXMPP.gitcd SleekXMPPsudo python3 setup.py install
请记住全程用 Python 3(如果你机器默认的 Python 是 Python 2 的话)。