用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
2.6 KiB

/****************************************************************************
**
** Copyright (C) 2013 Jeffrey Lee.
** All rights reserved.
** Contact: vipjeffreylee@gmail.com
** Please keep the author contact information.
** 2013-10-10
**
****************************************************************************/
#include "robot.h"
#include <QDebug>
#include <QDateTime>
#include <QtNetwork>
#include <QEventLoop>
#include <baiduweather.h>
#include <baidutranslate.h>
Robot::Robot(){
http=new QNetworkAccessManager(this);
connect(http,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
}
QString Robot::name(){
return QString("生活小百科");
}
ReplyMsg Robot::listenandsay(const MsgSender msgSender, const QString &message){
ReplyMsg replyMsg;
if(message.at(0)!='#'){
return replyMsg;
}
if(msgSender.groupTXUIN.isEmpty()){
replyMsg.recTXUIN=msgSender.friendTXUIN;
}else{
replyMsg.recTXUIN=msgSender.groupTXUIN;
}
QString tmpstr;
if(message.indexOf("#help")==0){
replyMsg.content="我是生活小百科,我能告诉你:\n#几点了、#time\n#天气 城市名\n#translate 空格间隔翻译内容";
}else if(message.indexOf("#几点了")==0||message.indexOf("#time")==0){
replyMsg.content=QString("%1 现在时间是:\n%2")
.arg(msgSender.friendName)
.arg(QDateTime::currentDateTime().toString("yyyy年MM月dd日 hh点mm分ss秒"));
}else if(message.indexOf("#天气")==0){
tmpstr=message.mid(3).trimmed();
if(tmpstr.isEmpty()){
replyMsg.content="请告诉我,你要哪里的天气预报?";
}else{
replyMsg.content=BaiduWeather::getWeather(tmpstr);
}
}else if(message.indexOf("#translate")==0||message.indexOf("#fy")==0||message.indexOf("#翻译")==0){
tmpstr=message.mid(message.indexOf(' ')).trimmed();
if(tmpstr.isEmpty()){
replyMsg.content="请告诉我,你要我帮你翻译什么?";
}else{
replyMsg.content=Baidutranslate::translate(tmpstr);
}
}
return replyMsg;
}
QString Robot::getWeather(){
QEventLoop q;
connect(this, SIGNAL(OnEventLoopQuit()), &q, SLOT(quit())); //异步调用完成退
weather.clear();
http->get(QNetworkRequest(QUrl(
QString("http://cgi.appx.qq.com/cgi/qqweb/weather/wth/weather.do?retype=1&t=%1")
.arg(QDateTime::currentMSecsSinceEpoch()))));
q.exec();
return weather;
}
void Robot::replyFinished(QNetworkReply *reply){
weather=QString::fromUtf8(reply->readAll());
reply->deleteLater();
emit OnEventLoopQuit();
return;
}