“
2014/06/29修改
重写代码=。=,,
去掉大部分不必要的模块。。。
”
模块:WebQQRobot
用法:传入QQ, 密码, 调用server()函数即可。。。
各模块的地址:
WebQQLogin.py, Queryable.py:http://blog.youkuaiyun.com/qq506657335/article/details/20801793
Sender.py(一部分):http://blog.youkuaiyun.com/qq506657335/article/details/20805155
Simsimi.py:http://blog.youkuaiyun.com/qq506657335/article/details/18922849
PollMsg.py:http://blog.youkuaiyun.com/qq506657335/article/details/20804353
WebQQRobot.py
#coding=utf-8
import sys;
from PollMsg import PollMsg;
from Sender import Sender;
from Simsimi import Simsimi;
from WebQQLogin import WebQQLogin;
from Queryable import Queryable;
class WebQQRobot(Queryable):
def __init__(self, robot = None):
Queryable.__init__(self, {
"robot":robot == None and Simsimi() or robot,
});
def __callback(self, ret):
if(ret["retcode"] == 0):
poll_type = ret["result"][0]["poll_type"];
result = ret["result"][0];
if(poll_type == "message"): #好友消息
self.sendMsg(result["value"]["from_uin"], self.queryInfo("robot").ask(result["value"]["content"][1]));
elif(poll_type == "group_message"):
pass;#不处理群消息
elif(poll_type == "buddies_status_change"):#好友状态更新
pass;
elif(poll_type == "kick_message"):
sys.exit(-1);
elif(ret["retcode"] == 102): #没消息
pass;
elif(ret["retcode"] == 116): #ptwebqq的值需要更新
self.queryInfo("poller").setQuery("ptwebqq", ret["p"]);
else:
print(ret);#debug
def serve(self, id, psw):
webQQ = WebQQLogin();
dict = webQQ.login(id, psw);
if(dict != None):
self.setQueryEx({
"sender":Sender(dict),
"poller":PollMsg(dict),
});
self.queryInfo("poller").poll(self.__callback);
def sendMsg(self, uin, msg, type = "friend"):
return self.queryInfo("sender").send(uin, msg, type);
def main():
robot = WebQQRobot();
robot.serve("1234567", "xxxx");
if(__name__ == "__main__"):
main();
Sender.py
#coding=utf-8
from AbstractSender import AbstractSender;
from Queryable import Queryable;
from FriendSender import FriendSender;
from GroupSender import GroupSender;
from DiscussSender import DiscussSender;
typeList = ["friend", "group", "discuss"];
class Sender(Queryable):
def __init__(self, dict):
Queryable.__init__(self, {
"friend":FriendSender(dict),
"group":GroupSender(dict),
"discuss":DiscussSender(dict)
});
def send(self, uin, msg, type):
if(self.find(type)):
return self.queryInfo(type).send(uin, msg);
return False;
#-------------------------------------------------------------(分割线, 下面内容已失效)-------------------------------------------------------------------------------------------------
QQRobot.py
import webQQLogin;
import getInfo;
import getMsg;
import sendMsg;
import simsimiWeb;
import time;
class QQRobot():
def __init__(self, user, psw):
self._webQQ = webQQLogin.webQQ(user, psw);
self._simsimi = simsimiWeb.simsimiWeb();
def _msgCircle(self):
self._msgGet = getMsg.getMsg(self._webQQ);
self._msgGet.get();
def _getInfo(self):
self._info = getInfo.getInfo(self._webQQ);
self._info.getAllInfo();
def _setMsgSender(self):
self._sender = sendMsg.sendMsg(self._webQQ);
def _get(self):
if(self._msgGet.hasMsg()):
return self._msgGet.popOneMsg();
return None, None;
def _ask(self, word):
return self._simsimi.ask(word);
def _send(self, uin, word):
self._sender.send(uin, word);
def _processMsg(self):
while(1):
uin, msg = self._get();
if(uin != None and msg != None):
answer = self._ask(msg[1]);
self._send(uin, answer);
time.sleep(3);
def server(self):
self._login();
self._processMsg();
def _login(self):
self._webQQ.login();
self._msgCircle();
self._getInfo();
self._setMsgSender();
def main():
robot = QQRobot("1578263421", "xxxx");
robot.server();
if(__name__ == "__main__"):
main();
测试时的截图。。。