Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

分享:使用c#+webservice+lumaqq做qq机器人(虚拟主机可用)

[复制链接]
seadevil 发表于 2008-5-2 14:48:54 | 显示全部楼层 |阅读模式
很多人都在盼望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 编辑 ]
 楼主| seadevil 发表于 2008-5-2 14:50:20 | 显示全部楼层
自己沙发
回复

使用道具 举报

mahuzi 发表于 2008-5-2 14:52:53 | 显示全部楼层
轻轻的顶一下
回复

使用道具 举报

derekhui 发表于 2008-5-2 14:53:40 | 显示全部楼层
:)   不错
回复

使用道具 举报

bizabc 发表于 2008-5-2 15:13:14 | 显示全部楼层

非常不错

支持楼主,再把时间挤挤,搞定它,呵呵
回复

使用道具 举报

hx126 发表于 2008-5-2 15:15:11 | 显示全部楼层
现在没什么心思搞这个,以后可能有用!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

risech 发表于 2008-5-2 17:03:04 | 显示全部楼层
支持一下了
回复

使用道具 举报

dinhuajj 发表于 2008-5-2 17:22:28 | 显示全部楼层
我顶你个肺,快出啊,等得大家都阳痿了。
回复

使用道具 举报

大街 发表于 2008-5-2 19:02:13 | 显示全部楼层
嘿嘿,偶准备推出新版的时候再安装UH,所以,您慢慢改吧,适合下一个版本就好~~~~
(*^__^*) 嘻嘻……最好可以和QQ,MSN,YAHOO通,MYSPACE都连接起来……HOHO~~~
回复

使用道具 举报

壹№啊树 发表于 2008-5-2 19:50:07 | 显示全部楼层
:) :) :)
关注,对这个不是太了解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 15:28 , Processed in 0.054689 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表