很多人都在盼望qq机器人,我以前也是急切期盼,很早就想做了,现在基本上实现了,但是做成通用版提供给大家使用还有些问题需要解决,所以就先把大概实现方法和关键代码放出来,第一是让一些稍微懂得c#的人能够制作自己的机器人(如果不懂,仔细看我的描述,也可以搞定),第二是希望有高手把他能做成通用版,当然我自己也会继续学习。
首先要感谢3个人,土哥、mahuzi、麦地
土哥曾经发布了一个webservice,但是需要soap支持,虚拟主机基本上没有支持的,所以没办法,不能用,极其郁闷,但是毕竟给我们提供了思路。
后来我在论坛感慨如何找支持soap的虚拟主机时,看到mahuzi回帖说pear_soap可以做虚拟主机可以用的webservice,于是加了他的qq,讨论了一下,他很快就搞定了webservice并发布了,同时还发布了msn机器人。
另外,感谢麦地同学的精神支持和测试,hoho
好了,现在入正题。
实现方法:在lumaqq.net的基础上来做qq机器人,通过mahuzi的webservice和uch交互
1、lumaqq.net是开源的,有c#版和java版两种,源码可以从网上down到
2、安装mahuzi提供的webservice,详见:https://discuz.dismall.com/thread-915064-1-2.html
3、在vs里面(我是用vs2005,其他工具也可以),打开lumaqq.net项目,添加web引用,地址就是mahuzi的webservice提供的wsdl地址,http://www.xxxx.com/xxxxxxxxxx/im_server.php?wsdl,,添加完就可以调用webservice了
4、在源代码里面找到static void MessageManager_ReceiveNormalIM函数,把我下面贴的代码替换掉原来的函数代码
static void MessageManager_ReceiveNormalIM(object sender, LumaQQ.NET.Events.QQEventArgs<LumaQQ.NET.Packets.In.ReceiveIMPacket, OutPacket> e)
{
WL("收到好友:{0} 发来的信息:{1}", e.InPacket.NormalHeader.Sender, e.InPacket.NormalIM.Message);
string msg_x = e.InPacket.NormalIM.Message;
if (msg_x == "h ")
e.QQClient.MessageManager.SendIM(e.InPacket.NormalHeader.Sender, string.Format("帮助我还没写好呢~"));
else
{
QQ.ConsoleClient.botws.ServerExampleService ws = new QQ.ConsoleClient.botws.ServerExampleService();
int qq1;
string qq;
qq1 = e.InPacket.NormalHeader.Sender;
qq = Convert.ToString(qq1);
WL(qq);
string id=ws.checkIm(qq,"qq");
if (id == "NO")
//WL("你还没有绑定QQ吧,赶快到个人设置里绑定qq先~");
e.QQClient.MessageManager.SendIM(e.InPacket.NormalHeader.Sender, string.Format("你还没有绑定QQ吧,赶快到个人设置里绑定qq先~", e.InPacket.NormalIM.Message));
else
{
ws.saveInfo(qq, msg_x, "qq");
WL("消息已成功发送到迷你博客!");
e.QQClient.MessageManager.SendIM(e.InPacket.NormalHeader.Sender, string.Format("消息已成功发送到迷你博客!祝你天天好心情\n输入h查看帮助信息\n以上为测试内容……希望你在“惠州圈”玩得开心^O^", e.InPacket.NormalIM.Message));
}
}
}
5、在源码里面找到static void Main函数,里面有设置qq机器人号码和密码的地方
QQUser user = new QQUser(971738867, "xxxxxxx");
换成你的
6、 //e.QQClient.FriendManager.ChangeStatus(QQStatus.AWAY, false);
这句注释掉,这句是把qq状态改成离开状态。
7、编译一下,生成exe文件。ok了
关键代码就这么多,当然你可以再做复杂一点,希望有高手做成通用版的放出来给大家共享,稍微懂点c#的,按照我的流程来做吧……你马上就有qq机器人了!
我的qq机器人:971738867
msn机器人:hzquan@live.cn
地址:www.hzquan.com
希望大家如果要测试,不要仅仅是测试,发了垃圾内容的话我还得删,最好传个头像发几张图啥的^_^
另外,希望官方在2.0版能够增加识别迷你博客来源的字段,这样就不用我们自己改数据库了,也希望官方能把webservice做好,出一个官方的webservice
[ 本帖最后由 seadevil 于 2008-5-2 15:04 编辑 ] |