微信机器人有几率被封号,教程不开放暂时1.前言正常人每天平均饮水量为2000-2500毫升,体内物质氧化可产生300毫升水,因此每天应补充2200毫升水,包括体内的水分饮食。夏季每天补充水分3000毫升左右即可满足人体需要。如果有个机器人可以按时提醒我们喝水就好了~~2.创建springboot项目(这一步是给小白的,大佬们可以直接跳到第三步)2.1。2.2创建一个新项目。选择springboot项目2.3。完成的项目结构如下3.引入simple-robot机器人依赖3.1.在pom.xml文件中引入simple-robot依赖1.82.0.3love.forte.simple-robotparent${simbot.version}import<类型>pomlove.forte.simple-robotcomponent-mirai-spring-boot-starter3.2。配置application.yml文件,使用ANDROID_PAD协议保持手机QQ和机器人同时在线simbot:core:#机器人的QQ账号和密码(账号:密码)bots:6013505:yinfengcomponent:mirai:#mirai心跳周期。如果太长,会导致被服务器断开连接。单位是心跳毫秒-period-millis:30000#等待每次心跳结果的时间。一旦心跳超时,整个网络服务将重启(耗时约1s)。除了正在进行的任务(例如图片上传)会被打断,事件和插件不受影响。heartbeat-timeout-millis:5000#心跳失败后第一次重连之前的等待时间。first-reconnect-delay-millis:5000#重连失败后,每次尝试的等待时间reconnect-period-millis:5000#最多尝试重连多少次reconnection-retry-times:2147483647#使用协议类型.注意,这个值是枚举类net.mamoe.mirai.utils.BotConfiguration.MiraiProtocol的元素值,#可选值有:ANDROID_PHONE,ANDROID_PAD,ANDROID_WATCHprotocol:ANDROID_PAD#是否关闭mirai的botloggerno-bot-log:true#关闭mirai网络日志no-network-log:true#Miraibot日志切换到使用simbot的日志use-simbot-bot-log:true#Mirai网络日志切换到使用simbot的日志use-simbot-network-log:true#mirai配置自定义deviceInfoSeed时使用的随机种子。默认为1.device-info-seed:1#mirai图片缓存策略,是枚举love.forte.simbot.component.mirai.configuration.MiraiCacheType的元素值,#可以是FILE,MEMORYcache-type:MEMORY#如果配置项simbot.mirai.cacheType的值为FILE,这里就是缓存文件的存放目录。为空时,默认为系统临时文件夹。cache-directory:#登录验证码处理器,登录需要输入验证码时使用。login-solver-type:DEFAULT#如果不为空,表示指定一个deviceInfojson文件路径。dispatcher:#mirai组件中,调度事件的线程池参数:最大线程数。core-pool-size:8#mirai组件中,调度事件的线程池参数:最大线程数。maximum-pool-size:8#在mirai组件中,调度事件的线程池参数:线程存活时间(毫秒)keep-alive-time:10003.3在springboot启动类中添加@EnableSimbot注解/***@authoryinfeng*@description启动类*@since2021/12/2222:50*/@EnableSimbot@EnableScheduling@SpringBootApplication@Slf4jpublicclassRobotApplication{publicstaticvoidmain(String[]args){SpringApplication.run(RobotApplication.class,args);log.info("机器人启动成功~~~~");}}3.4Simple-robot官方文档https://www.yuque.com/simpler...4.编写定时任务4.1.创建一个DrinkNotify。classjava/***@authoryinfeng*@description定时喝水*@since2021/12/2223:32*/@Component@Slf4jpublicclassDrinkNotify{@ResourceprivateBotManagerbotManager;@Value("${bello.qq}")privateSetqqSet;/***饮用水报价*/staticListcontent;/***饮用水图片*/staticListimages;static{content=newArrayList<>();图像=新的ArrayList<>();log.info("开始加载饮用水行情~~~");//喝水引用content.add("俗话说“女人是水做的”,所以作为一个女孩子,一定要时时刻刻喝水,这样才能保持充足的水分,皮肤和头发会更闪亮~");content.add("多喝水也可以保持身材,因为水促进了我们身体的循环~");content.add("该喝水了,多喝水会让你整个人看起来容光焕发~");content.add("该喝水了,照顾好自己,多喝水,多吃新鲜水果蔬菜,努力保证充足的睡眠加油!");content.add("多喝水很简单,多喝水对身体好!只有关心你的人才会说你家人常说的话:你应该多喝水!!~");content.add("天气寒冷干燥,多喝水,注意保暖。避免吸烟、饮酒和吃辛辣食物。好想我~");log.info("开始加载喝酒图片~~~");//喝酒图片images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221637.jpeg");images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221739.jpeg");images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221758.jpeg");images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221815.jpeg");images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221834.jpeg");images.add("https:///gitee.com/yinfeng-code/study-image/raw/master/image/20211224221913.jpeg");images.add("https://gitee.com/yinfeng-code/study-image/raw/master/image/20211224221925.jpeg");}/***每分钟提醒:00/1***?*每小时提醒:000/1**?*/@Scheduled(cron="000/1**?”)publicvoidhandler(){Calendarcalendar=Calendar.getInstance();//获取当前小时数inthour=calendar.get(Calendar.HOUR_OF_DAY);//只在上午9点到晚上8点发送消息提醒if(hour<9||hour>20){return;}qqSet.forEach(qq->{try{finalStringmsg=content.get(newRandom().nextInt(content.size()));finalStringimg=String.format("[CAT:image,url=%s,flash=false]",images.get(newRandom().nextInt(content.size())));//发送随机饮酒报价botManager.getDefaultBot().getSender().SENDER.sendPrivateMsg(qq,msg);//发送随机喝水图片botManager.getDefaultBot().getSender().SENDER.sendPrivateMsg(qq,img);log.info("发送喝水提醒,当前qq={},quotation={},img={}",qq,msg,img);}catch(Exceptione){log.error("发送喝水提醒异常,qq={}",qq,e);}});}}4.2。在yml文件中配置女神的QQ号#配置女神的QQ号,多个QQ用逗号隔开bello:qq:1332483344,520000125,添加智能聊天功能5.1。这里主要使用青云客的api进行聊天,官网http://api.qingyunke.com/5.2。封装http工具类/***@authoryinfeng*@descriptionhttp工具类*@since2021/12/2323:21*/publicclassHttpUtil{/***向指定URL发送GET方法请求**@paramurl发送请求的URL*@paramparam请求参数,请求参数形式为name1=value1&name2=value2*@returnURL表示的远程资源的响应结果*/publicstaticStringsendGet(Stringurl,Stringparam){StringBuilderresult=newStringBuilder();BufferedReaderin=null;尝试{字符串urlNameString=url;如果(!StringUtils.isEmpty(param)){urlNameString+="?"+参数;}URLrealUrl=newURL(urlNameString);//打开与URL的连接URLConnectionconnection=realUrl.openConnection();//设置公共请求属性connection.setRequestProperty("accept","*/*");connection.setRequestProperty("connection","Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/5.0(iPhone;CPUiPhoneOS13_2_3likeMacOSX)AppleWebKit/605.1.15(KHTML,likeGecko)Version/13.0.3Mobile/15E148Safari/604.1");//建立实际连接connection.connect();//定义BufferedReader输入流来读取URLi的响应n=newBufferedReader(newInputStreamReader(connection.getInputStream()));弦线;while((line=in.readLine())!=null){result.append(line);}}catch(Exceptione){System.out.println("发送GET请求时发生异常!"+e);e.printStackTrace();}//使用finally块关闭输入流finally{try{if(in!=null){in.close();}}catch(Exceptione2){e2.printStackTrace();}}返回结果.toString();}}5.3。创建消息监听类,支持私聊消息和群消息智能聊天/***@authoryinfeng*@descriptionRobotlistening*@since2021/11/620:51*/@Component@Slf4jpublicclassMessageListener{staticfinalStringURL="http://api.qingyunke.com/api.php";/***收听私人聊天消息*/@OnPrivatepublicvoidprivateMsg(PrivateMsgprivateMsg,MsgSendersender){sendMsg(privateMsg,发件人,假);}/***监听群消息*/@OnGrouppublicReplyAblegroupMsg(GroupMsggroupMsg,MsgSendersender){//群聊模式默认关闭,必要时移除评论//returnsendMsg(groupMsg,sender,true);返回空值;}/***通过青客云封装智能聊天**@paramcommonMsgcommonMsg*@paramsendersender*/privateReplyAblesendMsg(MessageGetcommonMsg,MsgSendersender,booleangroup){log.info("智能聊天~~~,接收消息:qq={},msg={}",commonMsg.getAccountInfo().getAccountCode(),commonMsg.getMsgContent().getMsg());//MsgSender中有3个大发送者,还有很多重载的方法//通过get请求调用聊天界面finalStringresult=HttpUtil.sendGet(URL,"key=free&appid=0&msg=".concat(commonMsg.getMsgContent().getMsg()));如果(!StringUtils.isEmpty(result)){最终JSONObjectjson=JSONObject.parseObject(result);if(json.getInteger("result")==0&&!StringUtils.isEmpty(json.getString("content"))){finalStringmsg=json.getString("content").replace("{br}","\n");log.info("智能聊天~~~,发送消息:qq={},msg={}",commonMsg.getAccountInfo().getAccountCode(),msg);//发送群消息if(group){//参数一:回复消息参数二:是否在群中returnReply.reply(msg,true);}//发送私聊消息sender.SENDER.sendPrivateMsg(commonMsg,msg);}}返回空值;}}6.测试6.1。启动项目6.2。喝水提醒测试可以看到两个qq都收到了提醒信息,后台日志没问题6.3。智能聊天测试显示聊天功能也正常,后台日志也正常7.源码地址暂时无法监听==单身朋友==的消息,老手可以下载源码自己玩//源码地址,下载运行即可//也可以打包成jar包并放在服务器上持续运行https://gitee.com/yinfeng-code/java-robot.git写的不容易,支持老铁三连。谢谢~下载源码的请点个star。八、常见问题处理8.1.PasswordError异常Error(title=登录失败,message=账号或密码错误,请重新输入,errorInfo=)异常截图如下解决方法:在application.yml中配置自己的qq账号和密码8.2.滑块验证异常UnsupportedSliderCaptchaException:Mirai无法完成滑块验证。使用协议ANDROID_PHONE强制滑块验证,请更改协议并重试。异常截图也请参考以下解决方法:尝试在application.yml中将协议改为PAD协议或watch协议,还是不行可以参考RobotFramework官网的文档。滑块登录异常。尝试执行滑块验证。尝试切换帐户以启用或禁用设备锁定。尝试在各种情况下改变网络环境,如切换到热点、使用电脑或手机等。account,而在提升了account之后,尝试上面的方法也未必能成功,或者说,大概率是不会成功的。但目前来看,过一段时间基本就会正常了。这段时间可能是几天,或者幸运的话是几个小时。8.3下载项目后idea导入异常解决办法:将你的IDEA升级到2021以上。详见IDEA导入包异常报错8.4其他机器人问题解决参考