如何为LumaQQ添加聊天机器人

LumaQQ没有提供功能十足的机器人给你用,所以,实现一个机器人需要靠你自己,LumaQQ只为你提供了一个简单的框架,本文就是向你介绍如何在LumaQQ中插入自己的机器人的。

第一步:实现自己的机器人

缺省情况下,LumaQQ提供了一个机器人,但是这个机器人基本上什么也没做,而且,缺省也是没有打开的。这个机器人的代码在edu.tsinghua.lumaqq.qq.robot.DummyRobot.java中,它纯粹是一个演示目的,如果你想看看效果,可以在LumaQQ的xml目录下面找到一个robots.xml文件,这个文件是机器人的配置文件,你可以看到里面我写了一些注释,你把那些注释去掉,保存,然后重启LumaQQ就可以了。使用机器人的方法是打开系统菜单,如果系统配置了至少一个机器人的话,系统菜单中会有一项“聊天机器人”,它的子菜单里面列出了所有存在的机器人,另外包含一个开始/停止菜单,我就不多说了,想来你应该会用。

为了实现一个聊天机器人,你必须实现edu.tsinghua.lumaqq.qq.robot.IRobot接口,这个接口目前相当简单,只包含了一个方法,如下:

public interface IRobot {
	/**
	 * 根据message得到一条回复消息
	 * 
	 * @param packet
	 * 		接受消息包
	 * @return
	 * 		回复的消息,返回null表示不响应这条消息
	 */
	public String getReply(ReceiveIMPacket packet);
}

而DummyRobot的实现则是:

public class DummyRobot implements IRobot {
	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.robot.IRobot#getReply(edu.tsinghua.lumaqq.qq.packets.in.ReceiveIMPacket)
	 */
	public String getReply(ReceiveIMPacket packet) {
		/*
		 * Example:
		 * 1. 如何得到发送者QQ号
		 * packet.header.sender
		 * 
		 * 2. 如何得到消息内容
		 * packet.normalIM.messageBytes是消息的字节数组内容,如果需要得到字符串形式
		 * new String(packet.normalIM.messageBytes, QQ.QQ_CHARSET_DEFAULT)
		 * 对于消息格式,参见edu.tsinghua.lumaqq.qq.beans.NormalIM
		 * 
		 * 3. 如何判断这个消息是一个大消息中的分片?
		 * if(packet.normalIM.totalFragments > 1) {
		 * 		// 做你的处理,怎么处理,你决定,你可以把他缓存起来等待所有分片都收到为止
		 * }
		 * 
		 * 4. 如何知道这个消息的分片序号?
		 * packet.normalIM.fragmentSequence
		 * 
		 * 5. 如何知道这个消息的id?消息id也是用在分片情况时,同一个消息的分片,消息id相同
		 * packet.normalIM.messageId
		 * 
		 * 6. 如何知道一个消息是不是自动回复?
		 * if(packet.normalIM.replyType != QQ.QQ_IM_AUTO_REPLY) {
		 * 		// 做你想做的
		 * }
		 * 
		 * 更多内容和可用字段
		 * 参考edu.tsinghua.lumaqq.qq.beans.NormalIMHeader
		 * 参考edu.tsinghua.lumaqq.qq.beans.ReceiveIMHeader
		 */
		if(packet.normalIM.replyType != QQ.QQ_IM_AUTO_REPLY)
			return "Hello, I am robot";
		else
			return null;
	}
}

所以你也看到了,DummyRobot基本上啥也没干,就是老返回一句相同的话而已,不过它会判断一下是不是自动回复,如果是就不处理了,免得碰到自动回复的时候没完没了。你看到了,DummyRobot里面的有不少注释,应该对你的帮助很直接了。

第二步:部署机器人程序

添加一个机器人并不需要修改LumaQQ的源代码,你只要将你的机器人程序打包成jar文件,然后copy到LumaQQ的lib目录下就可以了,这样的好处自然就是你可以随便添加机器人,而且并不一定需要有LumaQQ的源代码,当然,你在编写你的机器人程序的时候,需要导入lumaqq.jar到工程中,不然找不到IRobot接口定义了。

第三步:修改机器人配置文件

机器人配置文件位于LumaQQ的xml目录下,这个文件自然是新增的,如果不存在这个文件的话,那么LumaQQ就会认为是没有机器人可用,系统菜单中也就不会有机器人的菜单项了。这个文件的格式也很简单,假设我要配置DummyRobot,那么就是下面这个样子:

<?xml version="1.0" encoding="UTF-8"?>
<Robots>
	<Robot>
		<Name>Dummy Robot</Name>
		<Implementation>edu.tsinghua.lumaqq.qq.robot.DummyRobot</Implementation>
	</Robot>
</Robots>

See? 仅仅就是配置一个机器人的名字,另外配置一下IRobot的实现类即可。如果你有多个机器人,你可以随便添加Robot元素

总结

添加一个机器人的工作就结束了,喜欢玩就玩吧。

 
软件名称:梦想接口工作室 -- QQ机器人! 软件版本:1.0.0.1 更新日期:2010/7/19 软件作者:小胡 软件下载地址:http://www.8han.com/qq/down/QQRobot.rar 软件说明: 1.在论坛:http://www.8han.com 论坛中注册一个账号。然后用账号登陆软件。 2.登陆成功后输入QQ账号和密码。点击登陆,如果QQ好友比较多,就会比较慢,因为每次登陆都会下载好友信息和群信息。 3.在实时日志中就能看到QQ机器人的动作。 4.配置修改中,可以修改QQ机器人的默认语句和问答语句。 5.论坛整合中需要输入论坛的数据库信息。 6.设置 数据库信息 注:数据库前缀不要下划线,论坛地址后面不要加“/” 7.QQ群号有2层含义,1.与论坛绑定的群号,如若发现论坛有新帖,机器人就会向所设置的群号中发信息,2锁定的群号,因为考虑到有的用户,不想让机器人在别的群中说话,所以就可以锁定机器人只在锁定的群中发言。 8.如果在使用的过程中遇到问题,可以在论坛中提交问题,请经常查看版本信息,获取最新的QQ机器人版本。 函数讲解: 1.默认回答中的函数:$qq$:收到信息的发送QQ。 $qm$ :收到的信息。 2.论坛主贴群通知新信息:$author$ :帖子的发送人 $subject$:帖子的标题 $url$:帖子的地址 3.论坛主贴群通知新信息:$tauthor$ :帖子的发送人 $author$ :帖子的回复人 $subject$:帖子的标题 $url$:帖子的地址 $views$ : 浏览次数 $replay$ :回复次数 命令详解: help:列出所有命令集 s:www.8han.com 查询8han.com的收录情况和PR值 e:english 把英文翻译为中文 c:中国 把中文翻译为英文 j:中国 把简体翻译成繁体 f:中國 把繁体翻译成简体 软件调试成功后,论坛中发新帖会在绑定的QQ群中发言。 论坛中发新回帖会给发帖的楼主发信息。 QQ机器人2010-7-22 更新日志: 1.版本由1.0.0.1升级至1.0.0.2 2.简约了登陆界面 3.解决了缩小就关闭的问题,软件制作成:关闭就关闭了软件,但是出了QQ一样的缩进效果! 4.软件增加了测试论坛链接成功与否按钮 5.论坛版块中,点击了开始监控,才监控论坛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值