From 1a1831ccac03960ca55f8eb23c8e2e06c20bee82 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 6 May 2022 10:29:52 +0800 Subject: [PATCH 01/66] add monv cd --- .../com/badeling/msbot/config/MsbotConst.java | 13 ++-- .../com/badeling/msbot/entity/MonvTime.java | 70 ++++++++++++++++++ .../msbot/repository/MonvTimeRepository.java | 21 ++++++ .../msbot/serviceImpl/MsgServiceImpl.java | 73 ++++++++++++++----- src/main/resources/application.properties | 2 +- 5 files changed, 155 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/entity/MonvTime.java create mode 100644 src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java diff --git a/src/main/java/com/badeling/msbot/config/MsbotConst.java b/src/main/java/com/badeling/msbot/config/MsbotConst.java index 00d8aae..5623e34 100644 --- a/src/main/java/com/badeling/msbot/config/MsbotConst.java +++ b/src/main/java/com/badeling/msbot/config/MsbotConst.java @@ -3,22 +3,25 @@ public class MsbotConst { //go cqhttp本体 - public static final String miraiUrl = "D:/go-cqhttp"; + public static final String miraiUrl = "/Users/wuyingdi/go-cqhttp"; //go-cqhttp图片目录 public static final String imageUrl = miraiUrl + "/data/images/"; //机器人昵称 public static final String botName = "蠢猫"; //自己的昵称 - public static final String masterName = "BadeLing"; + public static final String masterName = "yoyodi"; //机器人qq号 - public static final String botId = "123456"; + public static final String botId = "709037643"; //自己的qq号 超级管理员 - public static final String masterId = "123456"; + public static final String masterId = "7707131"; //管理员qq号 public static final String[] managerId = {"123","223"}; //拉黑的qq号 public static final String[] blackList = {"323","423"}; - + + //魔女cd 单位秒 + public static final int monv_cd = 120; + //第三方机器人 也就是上面登录的账号 允许发言的频道 QQ频道发一句话 然后后台查看频道id //"channel_id":"1609899" public static final String[] botChannel = {"1609899"}; diff --git a/src/main/java/com/badeling/msbot/entity/MonvTime.java b/src/main/java/com/badeling/msbot/entity/MonvTime.java new file mode 100644 index 0000000..ef28689 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/MonvTime.java @@ -0,0 +1,70 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.sql.Timestamp; + +@Entity +public class MonvTime { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String user_id; + private String name; + private String group_id; + + private Timestamp updated_at; + + public MonvTime() { + + } + + @Override + public String toString() { + return "MonvTime [id=" + id + ", user_id=" + user_id + ", name=" + name + ", group_id=" + group_id + + ", updated_at=" + updated_at + "]"; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGroup_id() { + return group_id; + } + + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + + public Timestamp getUpdateTime() { + return updated_at; + } + + public void setUpdateTime(Timestamp updated_at) { + this.updated_at = updated_at; + } + +} diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java new file mode 100644 index 0000000..fb9cbde --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -0,0 +1,21 @@ +package com.badeling.msbot.repository; + +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import com.badeling.msbot.entity.MonvTime; +import java.sql.Timestamp; + +public interface MonvTimeRepository extends CrudRepository{ + @Query(value = "select * from monv_time where user_id = ?1",nativeQuery=true) + MonvTime findRoleBynumber(String user_id); + + @Modifying + @Transactional + @Query(value = "update monv_time set updated_at = ?2 where id = ?1",nativeQuery=true) + + void modifyUpdateTime(Long id, Timestamp updated_at); + +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index db0ac10..9fed172 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1,6 +1,7 @@ package com.badeling.msbot.serviceImpl; import java.io.IOException; +import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -15,6 +16,7 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; +import com.badeling.msbot.repository.*; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -41,14 +43,7 @@ import com.badeling.msbot.entity.RereadSentence; import com.badeling.msbot.entity.RereadTime; import com.badeling.msbot.entity.RoleDmg; -import com.badeling.msbot.repository.MsgNoPrefixRepository; -import com.badeling.msbot.repository.MsgRepository; -import com.badeling.msbot.repository.QuizOzAnswerRepository; -import com.badeling.msbot.repository.QuizOzQuestionRepository; -import com.badeling.msbot.repository.RankInfoRepository; -import com.badeling.msbot.repository.RereadSentenceRepository; -import com.badeling.msbot.repository.RereadTimeRepository; -import com.badeling.msbot.repository.RoleDmgRepository; +import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.service.ChannelService; import com.badeling.msbot.service.DrawService; import com.badeling.msbot.service.GroupMsgService; @@ -111,6 +106,9 @@ public class MsgServiceImpl implements MsgService{ @Autowired QuizOzAnswerRepository quizOzAnswerRepository; + + @Autowired + private MonvTimeRepository monvTimeRepository; @Override public ReplyMsg receive(String msg) { @@ -831,6 +829,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } roleDmg.setCommonDmg(100); roleDmg.setBossDmg(200); + System.out.println("roleDmg:"); + System.out.println(roleDmg); roleDmg = roleDmgRepository.save(roleDmg); } try { @@ -1288,7 +1288,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { e.printStackTrace(); } } - + /** if(raw_message.contains("抽卡")) { String mes; try { @@ -1299,20 +1299,57 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } replyMsg.setReply(mes); return replyMsg; - } + }**/ if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; - try { - mes = drawService.startDrawMs(); - } catch (Exception e) { - e.printStackTrace(); - mes = "图片文件缺失。"; + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + + if(monvTime == null) { + //查询无角色 + monvTime = new MonvTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + monvTime.setName(receiveMsg.getSender().getNickname()); + }else { + monvTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + monvTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + monvTime.setGroup_id("398359236"); + }else { + monvTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + monvTime.setUpdateTime(timestamp); + monvTime = monvTimeRepository.save(monvTime); + } + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + Long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; + + if (cd_time >= MsbotConst.monv_cd){ + monvTime.setUpdateTime(time_now); + monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); + + try { + mes = drawService.startDrawMs(); + } catch (Exception e) { + e.printStackTrace(); + mes = "图片文件缺失。"; + } + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + } + else { + mes = "抽奖冷却中,剩余"+(MsbotConst.monv_cd-cd_time)+"秒"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; } - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e56409c..7b7be6c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,7 +8,7 @@ spring.thymeleaf.mode=HTML5 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/msbot?serverTimezone=GMT%2B8&characterEncoding=utf-8 spring.datasource.username=root -spring.datasource.password=123456 +spring.datasource.password=a12345678 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver server.port=8081 From f41b182abddb2b8da6b224f89ffe363341b1ce30 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 6 May 2022 11:02:42 +0800 Subject: [PATCH 02/66] restore configuration files --- src/main/java/com/badeling/msbot/config/MsbotConst.java | 8 ++++---- .../com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 8 +++++--- src/main/resources/application.properties | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/badeling/msbot/config/MsbotConst.java b/src/main/java/com/badeling/msbot/config/MsbotConst.java index 5623e34..e433567 100644 --- a/src/main/java/com/badeling/msbot/config/MsbotConst.java +++ b/src/main/java/com/badeling/msbot/config/MsbotConst.java @@ -3,17 +3,17 @@ public class MsbotConst { //go cqhttp本体 - public static final String miraiUrl = "/Users/wuyingdi/go-cqhttp"; + public static final String miraiUrl = "D:/go-cqhttp"; //go-cqhttp图片目录 public static final String imageUrl = miraiUrl + "/data/images/"; //机器人昵称 public static final String botName = "蠢猫"; //自己的昵称 - public static final String masterName = "yoyodi"; + public static final String masterName = "BadeLing"; //机器人qq号 - public static final String botId = "709037643"; + public static final String botId = "123456"; //自己的qq号 超级管理员 - public static final String masterId = "7707131"; + public static final String masterId = "123456"; //管理员qq号 public static final String[] managerId = {"123","223"}; //拉黑的qq号 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 9fed172..8afdf04 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1305,6 +1305,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + boolean firstmark = false; if(monvTime == null) { //查询无角色 @@ -1326,11 +1328,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); monvTime.setUpdateTime(timestamp); monvTime = monvTimeRepository.save(monvTime); + firstmark = true; } - Timestamp time_now = new Timestamp(System.currentTimeMillis()); - Long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; - if (cd_time >= MsbotConst.monv_cd){ + Long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; + if (cd_time >= MsbotConst.monv_cd || firstmark==true){ monvTime.setUpdateTime(time_now); monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7b7be6c..e56409c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,7 +8,7 @@ spring.thymeleaf.mode=HTML5 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/msbot?serverTimezone=GMT%2B8&characterEncoding=utf-8 spring.datasource.username=root -spring.datasource.password=a12345678 +spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver server.port=8081 From 4f48128a888070a1a8ac8a77f1fe7fe18cc3d6a0 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 6 May 2022 14:15:04 +0800 Subject: [PATCH 03/66] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E6=8A=BD=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badeling/msbot/serviceImpl/MsgServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 8afdf04..8e58bdf 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1288,7 +1288,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { e.printStackTrace(); } } - /** + if(raw_message.contains("抽卡")) { String mes; try { @@ -1299,9 +1299,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } replyMsg.setReply(mes); return replyMsg; - }**/ - - + } + if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); @@ -1331,8 +1330,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { firstmark = true; } - Long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; - if (cd_time >= MsbotConst.monv_cd || firstmark==true){ + long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; + if (cd_time >= MsbotConst.monv_cd || firstmark){ monvTime.setUpdateTime(time_now); monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); From 8e7870a7f3e2f5595f8d7331ed5173230168194b Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 25 May 2022 09:24:03 +0800 Subject: [PATCH 04/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/MsbotApplication.java | 3 +- .../msbot/serviceImpl/MsgServiceImpl.java | 64 +++++++++++++++++-- 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/badeling/msbot/MsbotApplication.java b/src/main/java/com/badeling/msbot/MsbotApplication.java index 58d1104..37df19c 100644 --- a/src/main/java/com/badeling/msbot/MsbotApplication.java +++ b/src/main/java/com/badeling/msbot/MsbotApplication.java @@ -6,12 +6,13 @@ import com.badeling.msbot.domain.ReRead; +import java.util.TimeZone; @SpringBootApplication @EnableConfigurationProperties({ReRead.class}) public class MsbotApplication { - public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); SpringApplication.run(MsbotApplication.class, args); } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 8e58bdf..65b755a 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -55,6 +55,7 @@ import com.badeling.msbot.util.Loadfont2; import com.badeling.msbot.util.TranslateUtil; import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.web.client.RestTemplate; @Component public class MsgServiceImpl implements MsgService{ @@ -612,7 +613,24 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { String raw_message = receiveMsg.getMessage(); replyMsg.setAt_sender(true); replyMsg.setAuto_escape(false); - + + //翻译 + if(raw_message.contains(MsbotConst.botName+"翻译")) { + raw_message = raw_message.substring(raw_message.indexOf("翻译")+2); + raw_message = raw_message.replaceAll("\r","."); + raw_message = raw_message.replaceAll("\n","."); + System.out.println(raw_message); + String transResult; + try { + transResult = TranslateUtil.getTransResult(raw_message, "auto", "auto"); + replyMsg.setReply(transResult); + return replyMsg; + + } catch (IOException e) { + } + return null; + } + //布尔学习 if(raw_message.contains("学习")&&raw_message.contains("布尔问")&&raw_message.contains("答")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)) { @@ -1288,7 +1306,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { e.printStackTrace(); } } - + /** if(raw_message.contains("抽卡")) { String mes; try { @@ -1299,7 +1317,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } replyMsg.setReply(mes); return replyMsg; - } + }**/ if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; @@ -1495,7 +1513,43 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(message.toString()); return replyMsg; } - + + //禁言 + if(raw_message.startsWith(MsbotConst.botName+"禁言")&&raw_message.contains("[CQ:at")) { + if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + try { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { + replyMsg.setReply("禁言防御"); + } + else { + String imageName = "[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"; + replyMsg.setAt_sender(false); + String url = "http://127.0.0.1:5700/set_group_ban"; + JSONObject postData = new JSONObject(); + postData.put("group_id",receiveMsg.getGroup_id()); + postData.put("user_id",findNumber); + postData.put("duration",30*60); + RestTemplate client = new RestTemplate(); + JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); + System.out.println(json); + //replyMsg.setBan(true); + replyMsg.setReply("[CQ:at,qq=" + findNumber + "]"+imageName); + } + } + catch (Exception e) { + replyMsg.setReply("出现异常"); + } + } + else { + replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); + } + + return replyMsg; + } + if(raw_message.replace(" ", "").equals(MsbotConst.botName)) { replyMsg.setAuto_escape(false); replyMsg.setAt_sender(false); @@ -1607,7 +1661,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } Random r = new Random(); int random = r.nextInt(rep.size()); - replyMsg.setAt_sender(false); + replyMsg.setAt_sender(true); Msg msg2 = rep.get(random); if(msg2.getLink()==null) { replyMsg.setReply(msg2.getAnswer()); From 9d7f8e31c081d400a33cec9d9cb450b0c904e624 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 6 Jun 2022 15:54:01 +0800 Subject: [PATCH 05/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=AD=94=E5=A5=B3?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/entity/MonvTime.java | 63 ++++++++++- .../msbot/repository/MonvTimeRepository.java | 6 +- .../badeling/msbot/service/DrawService.java | 6 +- .../msbot/serviceImpl/ChannelServiceImpl.java | 17 +-- .../msbot/serviceImpl/DrawServiceImpl.java | 105 +++++++++++++++++- .../msbot/serviceImpl/MsgServiceImpl.java | 43 ++++++- 6 files changed, 215 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/badeling/msbot/entity/MonvTime.java b/src/main/java/com/badeling/msbot/entity/MonvTime.java index ef28689..617c3ca 100644 --- a/src/main/java/com/badeling/msbot/entity/MonvTime.java +++ b/src/main/java/com/badeling/msbot/entity/MonvTime.java @@ -17,6 +17,18 @@ public class MonvTime { private Timestamp updated_at; + private Integer prize_1; + + private Integer prize_2; + + private Integer prize_3; + + private Integer prize_4; + + private Integer prize_5; + + + public MonvTime() { } @@ -24,7 +36,9 @@ public MonvTime() { @Override public String toString() { return "MonvTime [id=" + id + ", user_id=" + user_id + ", name=" + name + ", group_id=" + group_id - + ", updated_at=" + updated_at + "]"; + + ", updated_at=" + updated_at + + ", prize_1=" + prize_1 + ", prize_2=" + prize_2 + ", prize_3=" + prize_3 + + ", prize_4=" + prize_4 +", prize_5=" + prize_5 +"]"; } public Long getId() { @@ -35,6 +49,14 @@ public void setId(Long id) { this.id = id; } + public void setPrize(Integer prize_1,Integer prize_2,Integer prize_3,Integer prize_4,Integer prize_5){ + this.prize_1 = prize_1; + this.prize_2 = prize_2; + this.prize_3 = prize_3; + this.prize_4 = prize_4; + this.prize_5 = prize_5; + } + public String getUser_id() { return user_id; } @@ -67,4 +89,43 @@ public void setUpdateTime(Timestamp updated_at) { this.updated_at = updated_at; } + public Integer getPrize_1() { + return prize_1; + } + + public Integer getPrize_2() { + return prize_2; + } + + public Integer getPrize_3() { + return prize_3; + } + + public Integer getPrize_4() { + return prize_4; + } + + public Integer getPrize_5() { + return prize_5; + } + + public void setPrize_1(Integer prize_1) { + this.prize_1 = prize_1; + } + + public void setPrize_2(Integer prize_2) { + this.prize_2 = prize_2; + } + + public void setPrize_3(Integer prize_3) { + this.prize_3 = prize_3; + } + + public void setPrize_4(Integer prize_4) { + this.prize_4 = prize_4; + } + + public void setPrize_5(Integer prize_5) { + this.prize_5 = prize_5; + } } diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index fb9cbde..0a97244 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -15,7 +15,11 @@ public interface MonvTimeRepository extends CrudRepository{ @Modifying @Transactional @Query(value = "update monv_time set updated_at = ?2 where id = ?1",nativeQuery=true) - void modifyUpdateTime(Long id, Timestamp updated_at); + @Modifying + @Transactional + @Query(value = "update monv_time set prize_1 = ?2, prize_2 = ?3, prize_3 = ?4,prize_4 = ?5, prize_5 = ?6 where id = ?1",nativeQuery=true) + void modifyUpdatePrize(Long id, Integer prize_1,Integer prize_2,Integer prize_3,Integer prize_4,Integer prize_5); + } diff --git a/src/main/java/com/badeling/msbot/service/DrawService.java b/src/main/java/com/badeling/msbot/service/DrawService.java index bfcd9ad..455da03 100644 --- a/src/main/java/com/badeling/msbot/service/DrawService.java +++ b/src/main/java/com/badeling/msbot/service/DrawService.java @@ -1,5 +1,6 @@ package com.badeling.msbot.service; +import com.badeling.msbot.entity.MonvTime; import org.springframework.stereotype.Service; @@ -12,9 +13,12 @@ public interface DrawService { String updatePhoto(); String startDraw() throws Exception; - + String startDrawMs() throws Exception; + String startDrawMs(MonvTime monvTime) throws Exception; + + String kemomimiDraw() throws Exception; String throwSomeone(String headImg) throws Exception; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java index 13b42a9..0ff67a0 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java @@ -14,6 +14,7 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; +import com.badeling.msbot.entity.MonvTime; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -402,20 +403,8 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { "eg:蠢猫160级13星428攻"); return replyMsg; } - - if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { - String mes; - try { - mes = drawService.startDrawMs(); - } catch (Exception e) { - e.printStackTrace(); - mes = "图片文件缺失。"; - } - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; - } - + + if(raw_message.contains("抽卡")) { String mes; try { diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 3aecd2c..38ff839 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -18,6 +18,8 @@ import javax.imageio.ImageIO; +import com.badeling.msbot.entity.MonvTime; +import com.badeling.msbot.repository.MonvTimeRepository; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -49,7 +51,10 @@ public class DrawServiceImpl implements DrawService{ @Autowired FriendsRepository friendsRepository; - + + @Autowired + private MonvTimeRepository monvTimeRepository; + @Override public String startDraw() throws Exception { Random r = new Random(); @@ -729,7 +734,12 @@ public String ignImage(String ignDate) throws Exception { } @Override - public String startDrawMs() throws Exception { + public String startDrawMs(MonvTime monvTime) throws Exception { + int prize_1=0; + int prize_2=0; + int prize_3=0; + int prize_4=0; + int prize_5=0; Random r = new Random(); HashSet randomList = new HashSet<>(); while (randomList.size() < 10) { @@ -755,17 +765,37 @@ public String startDrawMs() throws Exception { for(Integer random : randomList) { if(random<7550) { list.add(NewImageUtils.resizeBufferedImage(buffImg1,90,90,false)); + prize_1=prize_1+1; }else if(random<7550+2124){ list.add(NewImageUtils.resizeBufferedImage(buffImg2,90,90,false)); + prize_2=prize_2+1; }else if(random<7550+2124+300) { list.add(NewImageUtils.resizeBufferedImage(buffImg3,90,90,false)); - }else if(random<7550+2124+300+20) { + prize_3=prize_3+1; + }else if(random<7550+2124+300+20) { list.add(NewImageUtils.resizeBufferedImage(buffImg4,90,90,false)); - }else { + prize_4=prize_4+1; + }else { list.add(NewImageUtils.resizeBufferedImage(buffImg5,90,90,false)); - } + prize_5=prize_5+1; + } } - + System.out.println(monvTime.getId()); + System.out.println(monvTime.getPrize_1()); + System.out.println(monvTime.getPrize_2()); + System.out.println(monvTime.getPrize_3()); + System.out.println(monvTime.getPrize_4()); + System.out.println(monvTime.getPrize_5()); + + monvTimeRepository.modifyUpdatePrize( + monvTime.getId(), + monvTime.getPrize_1()+prize_1, + monvTime.getPrize_2()+prize_2, + monvTime.getPrize_3()+prize_3, + monvTime.getPrize_4()+prize_4, + monvTime.getPrize_5()+prize_5 + ); + sourceFile = watermark(sourceFile, list.get(0) , 375, 410, 1.0f); sourceFile = watermark(sourceFile, list.get(1) , 620, 410, 1.0f); sourceFile = watermark(sourceFile, list.get(2) , 870, 410, 1.0f); @@ -791,5 +821,68 @@ public String startDrawMs() throws Exception { return "[CQ:image,file=" + uuid +".jpg]"; } + @Override + public String startDrawMs() throws Exception { + Random r = new Random(); + HashSet randomList = new HashSet<>(); + while (randomList.size() < 10) { + int i = r.nextInt(10000)+1; + randomList.add(i); + } + + Calendar cal = Calendar.getInstance(); + int w=cal.get(Calendar.DAY_OF_WEEK)-1; + + String sourceFilePath = MsbotConst.imageUrl + "bfb/" + "mn.jpg"; + + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + + BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "1.png")); + BufferedImage buffImg2 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "2.png")); + BufferedImage buffImg3 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "3.png")); + BufferedImage buffImg4 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "4.png")); + BufferedImage buffImg5 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "5.png")); + List list = new ArrayList<>(); + for(Integer random : randomList) { + if(random<7550) { + list.add(NewImageUtils.resizeBufferedImage(buffImg1,90,90,false)); + }else if(random<7550+2124){ + list.add(NewImageUtils.resizeBufferedImage(buffImg2,90,90,false)); + }else if(random<7550+2124+300) { + list.add(NewImageUtils.resizeBufferedImage(buffImg3,90,90,false)); + }else if(random<7550+2124+300+20) { + list.add(NewImageUtils.resizeBufferedImage(buffImg4,90,90,false)); + }else { + list.add(NewImageUtils.resizeBufferedImage(buffImg5,90,90,false)); + } + } + + sourceFile = watermark(sourceFile, list.get(0) , 375, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(1) , 620, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(2) , 870, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(3) , 250, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(4) , 500, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(5) , 745, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(6) , 990, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(7) , 375, 805, 1.0f); + sourceFile = watermark(sourceFile, list.get(8) , 620, 805, 1.0f); + sourceFile = watermark(sourceFile, list.get(9) , 870, 805, 1.0f); + +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + sourceFile.getWidth(), sourceFile.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, + Color.WHITE, null); + // write to jpeg file +// ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } + } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 65b755a..e182058 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1318,8 +1318,46 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(mes); return replyMsg; }**/ + if(raw_message.contains("抽奖统计")||raw_message.contains("魔女统计")||raw_message.contains("百分百统计")) { + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + if(monvTime == null) { + //查询无角色 + monvTime = new MonvTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + monvTime.setName(receiveMsg.getSender().getNickname()); + }else { + monvTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + monvTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + monvTime.setGroup_id("398359236"); + }else { + monvTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + monvTime.setUpdateTime(timestamp); + monvTime.setPrize(0,0,0,0,0); + monvTime = monvTimeRepository.save(monvTime); + } + + String mes = "\r\n"; + mes += "一爆 "+(monvTime.getPrize_1())+"\r\n"; + mes += "二爆 "+(monvTime.getPrize_2())+"\r\n"; + mes += "三爆 "+(monvTime.getPrize_3())+"\r\n"; + mes += "四爆 "+(monvTime.getPrize_4())+"\r\n"; + mes += "五爆 "+(monvTime.getPrize_5())+"\r\n"; + mes += "氪金总额:"+(monvTime.getPrize_1()+monvTime.getPrize_2()+monvTime.getPrize_3()+monvTime.getPrize_4()+monvTime.getPrize_5())*100; + + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + + } - if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { + if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); Timestamp time_now = new Timestamp(System.currentTimeMillis()); @@ -1344,6 +1382,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } Timestamp timestamp = new Timestamp(System.currentTimeMillis()); monvTime.setUpdateTime(timestamp); + monvTime.setPrize(0,0,0,0,0); monvTime = monvTimeRepository.save(monvTime); firstmark = true; } @@ -1354,7 +1393,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); try { - mes = drawService.startDrawMs(); + mes = drawService.startDrawMs(monvTime); } catch (Exception e) { e.printStackTrace(); mes = "图片文件缺失。"; From 2dbf04a6bab1e1d614fec1aa4ddf550902749bcb Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 6 Jun 2022 16:25:42 +0800 Subject: [PATCH 06/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index e182058..3bfa0cd 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1349,7 +1349,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { mes += "三爆 "+(monvTime.getPrize_3())+"\r\n"; mes += "四爆 "+(monvTime.getPrize_4())+"\r\n"; mes += "五爆 "+(monvTime.getPrize_5())+"\r\n"; - mes += "氪金总额:"+(monvTime.getPrize_1()+monvTime.getPrize_2()+monvTime.getPrize_3()+monvTime.getPrize_4()+monvTime.getPrize_5())*100; + mes += "氪金总额: "+(monvTime.getPrize_1()+monvTime.getPrize_2()+monvTime.getPrize_3()+monvTime.getPrize_4()+monvTime.getPrize_5())*100+" 悲伤币"; replyMsg.setAt_sender(true); replyMsg.setReply(mes); From 064defcf66d77f345d743327e2f89c94baad11b6 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Jun 2022 09:01:54 +0800 Subject: [PATCH 07/66] =?UTF-8?q?=E6=8A=BD=E5=A5=96=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=8C=89=E6=97=A5=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/entity/MonvTime.java | 12 +++++++++- .../msbot/repository/MonvTimeRepository.java | 4 ++-- .../msbot/serviceImpl/MsgServiceImpl.java | 23 ++++++++++++------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/badeling/msbot/entity/MonvTime.java b/src/main/java/com/badeling/msbot/entity/MonvTime.java index 617c3ca..b8224bb 100644 --- a/src/main/java/com/badeling/msbot/entity/MonvTime.java +++ b/src/main/java/com/badeling/msbot/entity/MonvTime.java @@ -27,6 +27,8 @@ public class MonvTime { private Integer prize_5; + private String date; + public MonvTime() { @@ -36,7 +38,7 @@ public MonvTime() { @Override public String toString() { return "MonvTime [id=" + id + ", user_id=" + user_id + ", name=" + name + ", group_id=" + group_id - + ", updated_at=" + updated_at + + + ", updated_at=" + updated_at + ", date=" + date + ", prize_1=" + prize_1 + ", prize_2=" + prize_2 + ", prize_3=" + prize_3 + ", prize_4=" + prize_4 +", prize_5=" + prize_5 +"]"; } @@ -128,4 +130,12 @@ public void setPrize_4(Integer prize_4) { public void setPrize_5(Integer prize_5) { this.prize_5 = prize_5; } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } } diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index 0a97244..a6dead2 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -9,8 +9,8 @@ import java.sql.Timestamp; public interface MonvTimeRepository extends CrudRepository{ - @Query(value = "select * from monv_time where user_id = ?1",nativeQuery=true) - MonvTime findRoleBynumber(String user_id); + @Query(value = "select * from monv_time where user_id = ?1 and date = ?2",nativeQuery=true) + MonvTime findRoleBynumber(String user_id,String date); @Modifying @Transactional diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 3bfa0cd..cbc5a44 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1319,7 +1319,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; }**/ if(raw_message.contains("抽奖统计")||raw_message.contains("魔女统计")||raw_message.contains("百分百统计")) { - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now); if(monvTime == null) { //查询无角色 monvTime = new MonvTime(); @@ -1337,8 +1341,9 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }else { monvTime.setGroup_id(receiveMsg.getGroup_id()); } - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + Timestamp timestamp = new Timestamp(0); monvTime.setUpdateTime(timestamp); + monvTime.setDate(date_now); monvTime.setPrize(0,0,0,0,0); monvTime = monvTimeRepository.save(monvTime); } @@ -1357,11 +1362,13 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } - if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { + if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); Timestamp time_now = new Timestamp(System.currentTimeMillis()); - boolean firstmark = false; + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now); if(monvTime == null) { //查询无角色 @@ -1380,15 +1387,15 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }else { monvTime.setGroup_id(receiveMsg.getGroup_id()); } - Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + Timestamp timestamp = new Timestamp(0); monvTime.setUpdateTime(timestamp); + monvTime.setDate(date_now); monvTime.setPrize(0,0,0,0,0); monvTime = monvTimeRepository.save(monvTime); - firstmark = true; } long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; - if (cd_time >= MsbotConst.monv_cd || firstmark){ + if (cd_time >= MsbotConst.monv_cd){ monvTime.setUpdateTime(time_now); monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); From 787e295a4ea925cc49992d97728c682b122efb56 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Jun 2022 14:10:45 +0800 Subject: [PATCH 08/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8A=BD=E5=A5=96?= =?UTF-8?q?=E6=97=A5=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 106 +++++++++++++++++- .../com/badeling/msbot/entity/MonvTime.java | 3 + .../msbot/repository/MonvTimeRepository.java | 14 +++ .../msbot/serviceImpl/MsgServiceImpl.java | 82 ++++++++++++++ 4 files changed, 201 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 59fe868..cea58b1 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; +import com.badeling.msbot.entity.MonvTime; +import com.badeling.msbot.repository.MonvTimeRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; @@ -32,6 +34,8 @@ public class ScheduleTask { @Autowired private RereadTimeRepository rereadTimeRepository; + + private MonvTimeRepository monvTimeRepository; //清除图片缓存 @@ -66,7 +70,7 @@ private void rereadReport() { try { for(String group_id:groupList) { RereadSentence rereadSentence = rereadSentenceRepository.findMaxByGroup(group_id); - + //得到群成员信息 GroupMsg gp = new GroupMsg(); gp.setGroup_id(Long.parseLong(group_id)); @@ -131,8 +135,102 @@ private void rereadReport() { rereadSentenceRepository.deleteAll(); rereadTimeRepository.deleteAll(); } - - - + + + @Scheduled(cron="50 59 23 * * ?") + private void monvReport(){ + List groupList = monvTimeRepository.findEveryGroup(); + if(groupList!=null) { + try { + for(String group_id:groupList) { + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(group_id)); + Result groupMember = groupMsgService.getGroupMember(gp); + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String message = "\r\n本日氪佬是:\r\n"; + List list = monvTimeRepository.find3thCostByGroup(group_id); + if(list!=null) { + message += map.get(list.get(0).getUser_id()) + " 氪金总额: "+ list.get(0).getPrize()*100 +" 悲伤币\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的氪佬:\r\n"; + if(list.size()>1) { + message += map.get(list.get(1).getUser_id()) + " 氪金总额: "+ list.get(1).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + if(list.size()>2) { + message += map.get(list.get(2).getUser_id()) + " 氪金总额: "+ list.get(2).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n 本日欧皇是:\r\n"; + List list2 = monvTimeRepository.find3thLuckByGroup(group_id); + if(list!=null) { + message += map.get(list2.get(0).getUser_id()) + + "\r\n一爆: "+ list2.get(0).getPrize_5() + + " , 二爆: "+ list2.get(0).getPrize_4() + + " , 三爆: "+ list2.get(0).getPrize_3() + + " , 四爆: "+ list2.get(0).getPrize_2() + + " , 五爆: "+ list2.get(0).getPrize_1()+"\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; + if(list2.size()>1) { + message += map.get(list2.get(1).getUser_id()) + + " 一爆: "+ list2.get(1).getPrize_5() + + " , 二爆: "+ list2.get(1).getPrize_4() + + " , 三爆: "+ list2.get(1).getPrize_3() + + " , 四爆: "+ list2.get(1).getPrize_2() + + " , 五爆: "+ list2.get(1).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + if(list2.size()>2) { + message += map.get(list2.get(2).getUser_id()) + + " 一爆: "+ list2.get(2).getPrize_5() + + " , 二爆: "+ list2.get(2).getPrize_4() + + " , 三爆: "+ list2.get(2).getPrize_3() + + " , 四爆: "+ list2.get(2).getPrize_2() + + " , 五爆: "+ list2.get(2).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n为了成为欧洲人,努力氪金吧!uwu"; + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setAuto_escape(false); + groupMsg.setMessage(message); + groupMsg.setGroup_id(Long.parseLong((group_id))); + groupMsgService.sendGroupMsg(groupMsg); + } + }catch (Exception e) { + e.printStackTrace(); + } + }else {} + } + + } diff --git a/src/main/java/com/badeling/msbot/entity/MonvTime.java b/src/main/java/com/badeling/msbot/entity/MonvTime.java index b8224bb..634face 100644 --- a/src/main/java/com/badeling/msbot/entity/MonvTime.java +++ b/src/main/java/com/badeling/msbot/entity/MonvTime.java @@ -111,6 +111,8 @@ public Integer getPrize_5() { return prize_5; } + public Integer getPrize(){ return prize_1+prize_2+prize_3+prize_4+prize_5;} + public void setPrize_1(Integer prize_1) { this.prize_1 = prize_1; } @@ -131,6 +133,7 @@ public void setPrize_5(Integer prize_5) { this.prize_5 = prize_5; } + public String getDate() { return date; } diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index a6dead2..4784ab1 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -1,5 +1,7 @@ package com.badeling.msbot.repository; +import com.badeling.msbot.entity.RereadSentence; +import com.badeling.msbot.entity.RereadTime; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -7,11 +9,21 @@ import com.badeling.msbot.entity.MonvTime; import java.sql.Timestamp; +import java.util.List; public interface MonvTimeRepository extends CrudRepository{ @Query(value = "select * from monv_time where user_id = ?1 and date = ?2",nativeQuery=true) MonvTime findRoleBynumber(String user_id,String date); + @Query(value = "SELECT *,(SELECT SUM(prize_1+prize_2+prize_3+prize_4+prize_5) FROM monv_time mt2 WHERE mt1.id = mt2.id ) as gold" + + " FROM monv_time mt1 WHERE (group_id = ?1 AND TO_DAYS(NOW()) - TO_DAYS(mt1.`date`) <=0) ORDER BY gold DESC LIMIT 0,3 ",nativeQuery=true) + List find3thCostByGroup(String group_id); + + @Query(value = "SELECT * FROM monv_time WHERE (group_id =?1 AND TO_DAYS(NOW()) - TO_DAYS(`date`) <=0) " + + "ORDER BY prize_5 DESC,prize_4 DESC,prize_3 DESC,prize_2 DESC,prize_1 DESC LIMIT 0,3",nativeQuery=true) + List find3thLuckByGroup(String group_id); + + @Modifying @Transactional @Query(value = "update monv_time set updated_at = ?2 where id = ?1",nativeQuery=true) @@ -22,4 +34,6 @@ public interface MonvTimeRepository extends CrudRepository{ @Query(value = "update monv_time set prize_1 = ?2, prize_2 = ?3, prize_3 = ?4,prize_4 = ?5, prize_5 = ?6 where id = ?1",nativeQuery=true) void modifyUpdatePrize(Long id, Integer prize_1,Integer prize_2,Integer prize_3,Integer prize_4,Integer prize_5); + @Query(value = "select distinct group_id FROM monv_time WHERE (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0)",nativeQuery=true) + List findEveryGroup(); } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index cbc5a44..05d85ab 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1053,6 +1053,88 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } + + if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String message = "\r\n本日氪佬是:\r\n"; + List list = monvTimeRepository.find3thCostByGroup(receiveMsg.getGroup_id()); + if(list!=null) { + message += map.get(list.get(0).getUser_id()) + " 氪金总额: "+ list.get(0).getPrize()*100 +" 悲伤币\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的氪佬:\r\n"; + if(list.size()>1) { + message += map.get(list.get(1).getUser_id()) + " 氪金总额: "+ list.get(1).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + if(list.size()>2) { + message += map.get(list.get(2).getUser_id()) + " 氪金总额: "+ list.get(2).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n 本日欧皇是:\r\n"; + List list2 = monvTimeRepository.find3thLuckByGroup(receiveMsg.getGroup_id()); + if(list!=null) { + message += map.get(list2.get(0).getUser_id()) + + "\r\n一爆: "+ list2.get(0).getPrize_5() + + " , 二爆: "+ list2.get(0).getPrize_4() + + " , 三爆: "+ list2.get(0).getPrize_3() + + " , 四爆: "+ list2.get(0).getPrize_2() + + " , 五爆: "+ list2.get(0).getPrize_1()+"\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; + if(list2.size()>1) { + message += map.get(list2.get(1).getUser_id()) + + " 一爆: "+ list2.get(1).getPrize_5() + + " , 二爆: "+ list2.get(1).getPrize_4() + + " , 三爆: "+ list2.get(1).getPrize_3() + + " , 四爆: "+ list2.get(1).getPrize_2() + + " , 五爆: "+ list2.get(1).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + if(list2.size()>2) { + message += map.get(list2.get(2).getUser_id()) + + " 一爆: "+ list2.get(2).getPrize_5() + + " , 二爆: "+ list2.get(2).getPrize_4() + + " , 三爆: "+ list2.get(2).getPrize_3() + + " , 四爆: "+ list2.get(2).getPrize_2() + + " , 五爆: "+ list2.get(2).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n为了成为欧洲人,努力氪金吧!uwu"; + replyMsg.setReply(message); + return replyMsg; + } if(raw_message.contains("复读机周报")) { //得到群成员信息 From 34c8e1f90c23408db75de0df2f15ed8ace0b76f9 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Jun 2022 14:38:30 +0800 Subject: [PATCH 09/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 24 +++++++++---------- .../msbot/serviceImpl/MsgServiceImpl.java | 24 +++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index cea58b1..a78d06e 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -186,30 +186,30 @@ private void monvReport(){ List list2 = monvTimeRepository.find3thLuckByGroup(group_id); if(list!=null) { message += map.get(list2.get(0).getUser_id()) + - "\r\n一爆: "+ list2.get(0).getPrize_5() + - " , 二爆: "+ list2.get(0).getPrize_4() + + "\r\n五爆: "+ list2.get(0).getPrize_5() + + " , 四爆: "+ list2.get(0).getPrize_4() + " , 三爆: "+ list2.get(0).getPrize_3() + - " , 四爆: "+ list2.get(0).getPrize_2() + - " , 五爆: "+ list2.get(0).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(0).getPrize_2() + + " , 一爆: "+ list2.get(0).getPrize_1()+"\r\n"; message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; if(list2.size()>1) { message += map.get(list2.get(1).getUser_id()) + - " 一爆: "+ list2.get(1).getPrize_5() + - " , 二爆: "+ list2.get(1).getPrize_4() + + " 五爆: "+ list2.get(1).getPrize_5() + + " , 四爆: "+ list2.get(1).getPrize_4() + " , 三爆: "+ list2.get(1).getPrize_3() + - " , 四爆: "+ list2.get(1).getPrize_2() + - " , 五爆: "+ list2.get(1).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(1).getPrize_2() + + " , 一爆: "+ list2.get(1).getPrize_1()+"\r\n"; } else{ message += "虚位以待\r\n"; } if(list2.size()>2) { message += map.get(list2.get(2).getUser_id()) + - " 一爆: "+ list2.get(2).getPrize_5() + - " , 二爆: "+ list2.get(2).getPrize_4() + + " 五爆: "+ list2.get(2).getPrize_5() + + " , 四爆: "+ list2.get(2).getPrize_4() + " , 三爆: "+ list2.get(2).getPrize_3() + - " , 四爆: "+ list2.get(2).getPrize_2() + - " , 五爆: "+ list2.get(2).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(2).getPrize_2() + + " , 一爆: "+ list2.get(2).getPrize_1()+"\r\n"; } else{ message += "虚位以待\r\n"; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 05d85ab..77dd2a1 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1099,30 +1099,30 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { List list2 = monvTimeRepository.find3thLuckByGroup(receiveMsg.getGroup_id()); if(list!=null) { message += map.get(list2.get(0).getUser_id()) + - "\r\n一爆: "+ list2.get(0).getPrize_5() + - " , 二爆: "+ list2.get(0).getPrize_4() + + "\r\n五爆: "+ list2.get(0).getPrize_5() + + " , 四爆: "+ list2.get(0).getPrize_4() + " , 三爆: "+ list2.get(0).getPrize_3() + - " , 四爆: "+ list2.get(0).getPrize_2() + - " , 五爆: "+ list2.get(0).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(0).getPrize_2() + + " , 一爆: "+ list2.get(0).getPrize_1()+"\r\n"; message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; if(list2.size()>1) { message += map.get(list2.get(1).getUser_id()) + - " 一爆: "+ list2.get(1).getPrize_5() + - " , 二爆: "+ list2.get(1).getPrize_4() + + " 五爆: "+ list2.get(1).getPrize_5() + + " , 四爆: "+ list2.get(1).getPrize_4() + " , 三爆: "+ list2.get(1).getPrize_3() + - " , 四爆: "+ list2.get(1).getPrize_2() + - " , 五爆: "+ list2.get(1).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(1).getPrize_2() + + " , 一爆: "+ list2.get(1).getPrize_1()+"\r\n"; } else{ message += "虚位以待\r\n"; } if(list2.size()>2) { message += map.get(list2.get(2).getUser_id()) + - " 一爆: "+ list2.get(2).getPrize_5() + - " , 二爆: "+ list2.get(2).getPrize_4() + + " 五爆: "+ list2.get(2).getPrize_5() + + " , 四爆: "+ list2.get(2).getPrize_4() + " , 三爆: "+ list2.get(2).getPrize_3() + - " , 四爆: "+ list2.get(2).getPrize_2() + - " , 五爆: "+ list2.get(2).getPrize_1()+"\r\n"; + " , 二爆: "+ list2.get(2).getPrize_2() + + " , 一爆: "+ list2.get(2).getPrize_1()+"\r\n"; } else{ message += "虚位以待\r\n"; From 40892acbcb37a75eba5dc11b9e7763078e6fd636 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Jun 2022 15:06:36 +0800 Subject: [PATCH 10/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/repository/MonvTimeRepository.java | 4 ++-- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index 4784ab1..bfdaf6c 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -12,8 +12,8 @@ import java.util.List; public interface MonvTimeRepository extends CrudRepository{ - @Query(value = "select * from monv_time where user_id = ?1 and date = ?2",nativeQuery=true) - MonvTime findRoleBynumber(String user_id,String date); + @Query(value = "select * from monv_time where user_id = ?1 and date = ?2 and group_id=?3",nativeQuery=true) + MonvTime findRoleBynumber(String user_id,String date,String group_id ); @Query(value = "SELECT *,(SELECT SUM(prize_1+prize_2+prize_3+prize_4+prize_5) FROM monv_time mt2 WHERE mt1.id = mt2.id ) as gold" + " FROM monv_time mt1 WHERE (group_id = ?1 AND TO_DAYS(NOW()) - TO_DAYS(mt1.`date`) <=0) ORDER BY gold DESC LIMIT 0,3 ",nativeQuery=true) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 77dd2a1..74551e4 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1405,7 +1405,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String date_now = df.format(time_now); - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now); + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); if(monvTime == null) { //查询无角色 monvTime = new MonvTime(); @@ -1450,7 +1450,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String date_now = df.format(time_now); - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now); + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); if(monvTime == null) { //查询无角色 From fb5b5cfe2280f4f17b45736995e1a5ae1ec7b660 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 8 Jun 2022 08:04:04 +0800 Subject: [PATCH 11/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8A=BD=E5=A5=96?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 252 +++++++++--------- 1 file changed, 131 insertions(+), 121 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 74551e4..ff3ac1c 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1054,88 +1054,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } - if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { - //得到群成员信息 - GroupMsg gp = new GroupMsg(); - gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); - Result groupMember = groupMsgService.getGroupMember(gp); - - @SuppressWarnings("unchecked") - List> data = (List>) groupMember.getData(); - Map map = new HashMap<>(); - for(Map temp:data) { - String a = temp.get("user_id")+""; - String b = (String) temp.get("nickname"); - String c = (String) temp.get("card"); - if(c.equals("")) { - //无群名片 - map.put(a, b); - }else { - //有群名片 - map.put(a, c); - } - } - - String message = "\r\n本日氪佬是:\r\n"; - List list = monvTimeRepository.find3thCostByGroup(receiveMsg.getGroup_id()); - if(list!=null) { - message += map.get(list.get(0).getUser_id()) + " 氪金总额: "+ list.get(0).getPrize()*100 +" 悲伤币\r\n"; - message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的氪佬:\r\n"; - if(list.size()>1) { - message += map.get(list.get(1).getUser_id()) + " 氪金总额: "+ list.get(1).getPrize()*100 +" 悲伤币\r\n"; - }else{ - message += "虚位以待\r\n"; - } - if(list.size()>2) { - message += map.get(list.get(2).getUser_id()) + " 氪金总额: "+ list.get(2).getPrize()*100 +" 悲伤币\r\n"; - }else{ - message += "虚位以待\r\n"; - } - } - else { - message += "虚位以待\r\n"; - } - message += "——————————————————\r\n 本日欧皇是:\r\n"; - List list2 = monvTimeRepository.find3thLuckByGroup(receiveMsg.getGroup_id()); - if(list!=null) { - message += map.get(list2.get(0).getUser_id()) + - "\r\n五爆: "+ list2.get(0).getPrize_5() + - " , 四爆: "+ list2.get(0).getPrize_4() + - " , 三爆: "+ list2.get(0).getPrize_3() + - " , 二爆: "+ list2.get(0).getPrize_2() + - " , 一爆: "+ list2.get(0).getPrize_1()+"\r\n"; - message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; - if(list2.size()>1) { - message += map.get(list2.get(1).getUser_id()) + - " 五爆: "+ list2.get(1).getPrize_5() + - " , 四爆: "+ list2.get(1).getPrize_4() + - " , 三爆: "+ list2.get(1).getPrize_3() + - " , 二爆: "+ list2.get(1).getPrize_2() + - " , 一爆: "+ list2.get(1).getPrize_1()+"\r\n"; - } - else{ - message += "虚位以待\r\n"; - } - if(list2.size()>2) { - message += map.get(list2.get(2).getUser_id()) + - " 五爆: "+ list2.get(2).getPrize_5() + - " , 四爆: "+ list2.get(2).getPrize_4() + - " , 三爆: "+ list2.get(2).getPrize_3() + - " , 二爆: "+ list2.get(2).getPrize_2() + - " , 一爆: "+ list2.get(2).getPrize_1()+"\r\n"; - } - else{ - message += "虚位以待\r\n"; - } - } - else { - message += "虚位以待\r\n"; - } - message += "——————————————————\r\n为了成为欧洲人,努力氪金吧!uwu"; - replyMsg.setReply(message); - return replyMsg; - } - if(raw_message.contains("复读机周报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); @@ -1400,6 +1318,89 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(mes); return replyMsg; }**/ + + if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String message = "\r\n本日氪佬是:\r\n"; + List list = monvTimeRepository.find3thCostByGroup(receiveMsg.getGroup_id()); + if(list!=null) { + message += map.get(list.get(0).getUser_id()) + " 氪金总额: "+ list.get(0).getPrize()*100 +" 悲伤币\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的氪佬:\r\n"; + if(list.size()>1) { + message += map.get(list.get(1).getUser_id()) + " 氪金总额: "+ list.get(1).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + if(list.size()>2) { + message += map.get(list.get(2).getUser_id()) + " 氪金总额: "+ list.get(2).getPrize()*100 +" 悲伤币\r\n"; + }else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n 本日欧皇是:\r\n"; + List list2 = monvTimeRepository.find3thLuckByGroup(receiveMsg.getGroup_id()); + if(list!=null) { + message += map.get(list2.get(0).getUser_id()) + + "\r\n五爆: "+ list2.get(0).getPrize_5() + + " , 四爆: "+ list2.get(0).getPrize_4() + + " , 三爆: "+ list2.get(0).getPrize_3() + + " , 二爆: "+ list2.get(0).getPrize_2() + + " , 一爆: "+ list2.get(0).getPrize_1()+"\r\n"; + message += "此外,以下两名成员获得了亚军和季军,也是非常优秀的欧皇:\r\n"; + if(list2.size()>1) { + message += map.get(list2.get(1).getUser_id()) + + " 五爆: "+ list2.get(1).getPrize_5() + + " , 四爆: "+ list2.get(1).getPrize_4() + + " , 三爆: "+ list2.get(1).getPrize_3() + + " , 二爆: "+ list2.get(1).getPrize_2() + + " , 一爆: "+ list2.get(1).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + if(list2.size()>2) { + message += map.get(list2.get(2).getUser_id()) + + " 五爆: "+ list2.get(2).getPrize_5() + + " , 四爆: "+ list2.get(2).getPrize_4() + + " , 三爆: "+ list2.get(2).getPrize_3() + + " , 二爆: "+ list2.get(2).getPrize_2() + + " , 一爆: "+ list2.get(2).getPrize_1()+"\r\n"; + } + else{ + message += "虚位以待\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + message += "——————————————————\r\n为了成为欧洲人,努力氪金吧!uwu"; + replyMsg.setReply(message); + return replyMsg; + } + if(raw_message.contains("抽奖统计")||raw_message.contains("魔女统计")||raw_message.contains("百分百统计")) { Timestamp time_now = new Timestamp(System.currentTimeMillis()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); @@ -1447,56 +1448,65 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; Timestamp time_now = new Timestamp(System.currentTimeMillis()); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String date_now = df.format(time_now); - - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + int hours = time_now.getHours(); + if(hours>=0 && hours<=11){ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); - if(monvTime == null) { - //查询无角色 - monvTime = new MonvTime(); - //设置群名片 如果没有 设置昵称 - if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { - monvTime.setName(receiveMsg.getSender().getNickname()); - }else { - monvTime.setName(receiveMsg.getSender().getCard()); - } - //设置QQ号 - monvTime.setUser_id(receiveMsg.getSender().getUser_id()); - //设置群号 - if(receiveMsg.getGroup_id().contains("101577006")) { - monvTime.setGroup_id("398359236"); - }else { - monvTime.setGroup_id(receiveMsg.getGroup_id()); + if(monvTime == null) { + //查询无角色 + monvTime = new MonvTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + monvTime.setName(receiveMsg.getSender().getNickname()); + }else { + monvTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + monvTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + monvTime.setGroup_id("398359236"); + }else { + monvTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(0); + monvTime.setUpdateTime(timestamp); + monvTime.setDate(date_now); + monvTime.setPrize(0,0,0,0,0); + monvTime = monvTimeRepository.save(monvTime); } - Timestamp timestamp = new Timestamp(0); - monvTime.setUpdateTime(timestamp); - monvTime.setDate(date_now); - monvTime.setPrize(0,0,0,0,0); - monvTime = monvTimeRepository.save(monvTime); - } - long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; - if (cd_time >= MsbotConst.monv_cd){ - monvTime.setUpdateTime(time_now); - monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); + long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; + if (cd_time >= MsbotConst.monv_cd){ + monvTime.setUpdateTime(time_now); + monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); - try { - mes = drawService.startDrawMs(monvTime); - } catch (Exception e) { - e.printStackTrace(); - mes = "图片文件缺失。"; + try { + mes = drawService.startDrawMs(monvTime); + } catch (Exception e) { + e.printStackTrace(); + mes = "图片文件缺失。"; + } + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + } + else { + mes = "抽奖冷却中,剩余"+(MsbotConst.monv_cd-cd_time)+"秒"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; } - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; } else { - mes = "抽奖冷却中,剩余"+(MsbotConst.monv_cd-cd_time)+"秒"; + mes = "抽奖时间: 每日0-12点,请稍后..."; replyMsg.setAt_sender(true); replyMsg.setReply(mes); return replyMsg; } + } From 2fba8a467581b0318d22b1e2afb6e79bd1d3d9ae Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 8 Jun 2022 09:17:31 +0800 Subject: [PATCH 12/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/controller/ScheduleTask.java | 1 + .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index a78d06e..2f886b4 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -35,6 +35,7 @@ public class ScheduleTask { @Autowired private RereadTimeRepository rereadTimeRepository; + @Autowired private MonvTimeRepository monvTimeRepository; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index ff3ac1c..be150b7 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.sql.Timestamp; import java.text.SimpleDateFormat; +import java.time.Instant; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; @@ -1448,7 +1449,10 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { String mes; Timestamp time_now = new Timestamp(System.currentTimeMillis()); - int hours = time_now.getHours(); + + SimpleDateFormat formatHours = new SimpleDateFormat("HH"); + int hours = Integer.parseInt(formatHours.format(time_now)); + if(hours>=0 && hours<=11){ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String date_now = df.format(time_now); From f4a87976d5a37afaa4c392f825bb5f57b1bfef7f Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 8 Jun 2022 10:23:16 +0800 Subject: [PATCH 13/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/badeling/msbot/controller/ScheduleTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 2f886b4..0447e61 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -138,7 +138,7 @@ private void rereadReport() { } - @Scheduled(cron="50 59 23 * * ?") + @Scheduled(cron="0 0 12 * * ?") private void monvReport(){ List groupList = monvTimeRepository.findEveryGroup(); if(groupList!=null) { From 9261dbd24a13d8828c612d3b1c64683281a06d93 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 14 Jun 2022 12:18:26 +0800 Subject: [PATCH 14/66] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 2 +- .../msbot/repository/MonvTimeRepository.java | 4 ++ .../msbot/serviceImpl/MsgServiceImpl.java | 72 +++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 0447e61..054d1a4 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -164,7 +164,7 @@ private void monvReport(){ } } - String message = "\r\n本日氪佬是:\r\n"; + String message = "本日氪佬是:\r\n"; List list = monvTimeRepository.find3thCostByGroup(group_id); if(list!=null) { message += map.get(list.get(0).getUser_id()) + " 氪金总额: "+ list.get(0).getPrize()*100 +" 悲伤币\r\n"; diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index bfdaf6c..0f65ce4 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -12,6 +12,7 @@ import java.util.List; public interface MonvTimeRepository extends CrudRepository{ + @Query(value = "select * from monv_time where user_id = ?1 and date = ?2 and group_id=?3",nativeQuery=true) MonvTime findRoleBynumber(String user_id,String date,String group_id ); @@ -19,6 +20,9 @@ public interface MonvTimeRepository extends CrudRepository{ " FROM monv_time mt1 WHERE (group_id = ?1 AND TO_DAYS(NOW()) - TO_DAYS(mt1.`date`) <=0) ORDER BY gold DESC LIMIT 0,3 ",nativeQuery=true) List find3thCostByGroup(String group_id); + @Query(value = "SELECT * FROM monv_time mt WHERE user_id =?1 AND group_id = ?2 ",nativeQuery=true) + List findCostByGroup(String user_id,String group_id); + @Query(value = "SELECT * FROM monv_time WHERE (group_id =?1 AND TO_DAYS(NOW()) - TO_DAYS(`date`) <=0) " + "ORDER BY prize_5 DESC,prize_4 DESC,prize_3 DESC,prize_2 DESC,prize_1 DESC LIMIT 0,3",nativeQuery=true) List find3thLuckByGroup(String group_id); diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index be150b7..91958f4 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1320,6 +1320,78 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; }**/ + if(raw_message.startsWith(MsbotConst.botName+"结账")&&raw_message.contains("[CQ:at")) { + try { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + + + if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + List list = monvTimeRepository.findCostByGroup(findNumber,receiveMsg.getGroup_id()); + + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String mes = "\r\n"; + System.out.println(findNumber); + System.out.println(list); + if(list.size() == 0) { + mes += "未查到: "+ map.get(findNumber) +" 的抽奖记录"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + else { + mes += "氪佬: "+map.get(list.get(0).getUser_id()) +"\r\n"; + int prize_1 =0,prize_2 =0,prize_3 =0,prize_4 =0,prize_5 =0; + + for (int i = 0; i < list.size(); i++) { + prize_1 += list.get(i).getPrize_1(); + prize_2 += list.get(i).getPrize_2(); + prize_3 += list.get(i).getPrize_3(); + prize_4 += list.get(i).getPrize_4(); + prize_5 += list.get(i).getPrize_5(); + } + + mes += "一爆 "+prize_1+"\r\n"; + mes += "二爆 "+prize_2+"\r\n"; + mes += "三爆 "+prize_3+"\r\n"; + mes += "四爆 "+prize_4+"\r\n"; + mes += "五爆 "+prize_5+"\r\n"; + mes += "氪金总额: "+(prize_1+prize_2+prize_3+prize_4+prize_5)*100+" 悲伤币"; + + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + } + else { + replyMsg.setAt_sender(false); + replyMsg.setReply("[CQ:at,qq=" + receiveMsg.getUser_id() + "]" + "宁是什么东西也配命令老娘?爬爬爬!"); + } + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); + } + } + if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); From bf632ac755d3bc9ab14e4920087c1a7aa97ede2d Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 14 Jun 2022 12:43:28 +0800 Subject: [PATCH 15/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 141 +++++++++++++----- 1 file changed, 102 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 91958f4..2a43215 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1320,14 +1320,79 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; }**/ - if(raw_message.startsWith(MsbotConst.botName+"结账")&&raw_message.contains("[CQ:at")) { - try { - int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; - int bIndex = receiveMsg.getRaw_message().indexOf("]"); - String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + if(raw_message.startsWith(MsbotConst.botName+"结账")){ + if (raw_message.contains("[CQ:at")){ + try { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + + + if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + List list = monvTimeRepository.findCostByGroup(findNumber,receiveMsg.getGroup_id()); + + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String mes = "\r\n"; + if(list.size() == 0) { + mes += "未查到: "+ map.get(findNumber) +" 的抽奖记录"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + else { + mes += "氪佬: "+map.get(list.get(0).getUser_id()) +"\r\n"; + int prize_1 =0,prize_2 =0,prize_3 =0,prize_4 =0,prize_5 =0; + + for (int i = 0; i < list.size(); i++) { + prize_1 += list.get(i).getPrize_1(); + prize_2 += list.get(i).getPrize_2(); + prize_3 += list.get(i).getPrize_3(); + prize_4 += list.get(i).getPrize_4(); + prize_5 += list.get(i).getPrize_5(); + } + mes += "一爆 "+prize_1+"\r\n"; + mes += "二爆 "+prize_2+"\r\n"; + mes += "三爆 "+prize_3+"\r\n"; + mes += "四爆 "+prize_4+"\r\n"; + mes += "五爆 "+prize_5+"\r\n"; + mes += "氪金总额: "+(prize_1+prize_2+prize_3+prize_4+prize_5)*100+" 悲伤币"; - if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + } + else { + replyMsg.setAt_sender(false); + replyMsg.setReply("[CQ:at,qq=" + receiveMsg.getUser_id() + "]" + "宁是什么东西也配命令老娘?爬爬爬!"); + } + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); + } + } + else { + try { + String findNumber = receiveMsg.getUser_id(); List list = monvTimeRepository.findCostByGroup(findNumber,receiveMsg.getGroup_id()); //得到群成员信息 @@ -1345,53 +1410,51 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(c.equals("")) { //无群名片 map.put(a, b); - }else { + } + else { //有群名片 map.put(a, c); } } String mes = "\r\n"; - System.out.println(findNumber); - System.out.println(list); + if(list.size() == 0) { - mes += "未查到: "+ map.get(findNumber) +" 的抽奖记录"; - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - } - else { - mes += "氪佬: "+map.get(list.get(0).getUser_id()) +"\r\n"; - int prize_1 =0,prize_2 =0,prize_3 =0,prize_4 =0,prize_5 =0; - - for (int i = 0; i < list.size(); i++) { - prize_1 += list.get(i).getPrize_1(); - prize_2 += list.get(i).getPrize_2(); - prize_3 += list.get(i).getPrize_3(); - prize_4 += list.get(i).getPrize_4(); - prize_5 += list.get(i).getPrize_5(); + mes += "未查到: "+ map.get(findNumber) +" 的抽奖记录"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); } + else { + mes += "氪佬: "+map.get(list.get(0).getUser_id()) +"\r\n"; + int prize_1 =0,prize_2 =0,prize_3 =0,prize_4 =0,prize_5 =0; - mes += "一爆 "+prize_1+"\r\n"; - mes += "二爆 "+prize_2+"\r\n"; - mes += "三爆 "+prize_3+"\r\n"; - mes += "四爆 "+prize_4+"\r\n"; - mes += "五爆 "+prize_5+"\r\n"; - mes += "氪金总额: "+(prize_1+prize_2+prize_3+prize_4+prize_5)*100+" 悲伤币"; + for (int i = 0; i < list.size(); i++) { + prize_1 += list.get(i).getPrize_1(); + prize_2 += list.get(i).getPrize_2(); + prize_3 += list.get(i).getPrize_3(); + prize_4 += list.get(i).getPrize_4(); + prize_5 += list.get(i).getPrize_5(); + } - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - } - } - else { - replyMsg.setAt_sender(false); - replyMsg.setReply("[CQ:at,qq=" + receiveMsg.getUser_id() + "]" + "宁是什么东西也配命令老娘?爬爬爬!"); + mes += "一爆 "+prize_1+"\r\n"; + mes += "二爆 "+prize_2+"\r\n"; + mes += "三爆 "+prize_3+"\r\n"; + mes += "四爆 "+prize_4+"\r\n"; + mes += "五爆 "+prize_5+"\r\n"; + mes += "氪金总额: "+(prize_1+prize_2+prize_3+prize_4+prize_5)*100+" 悲伤币"; + + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); } - return replyMsg; - } catch (Exception e) { - e.printStackTrace(); } } + if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); From ccc9b62ea0c0ad179525acfa8fdff1636f7a3f15 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 24 Jun 2022 17:07:33 +0800 Subject: [PATCH 16/66] =?UTF-8?q?=E5=90=8C=E6=AD=A5v1.1=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/MsgZbCalculate.java | 66 +++- .../msbot/controller/NewImageUtils.java | 342 +++++++++++------- .../badeling/msbot/service/DrawService.java | 2 +- .../msbot/serviceImpl/DrawServiceImpl.java | 195 ++++++++++ .../msbot/serviceImpl/MsgServiceImpl.java | 12 +- .../com/badeling/msbot/util/Loadfont2.java | 7 + 6 files changed, 472 insertions(+), 152 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java b/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java index 0876532..6835f8d 100644 --- a/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java +++ b/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java @@ -1,5 +1,6 @@ package com.badeling.msbot.controller; +import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -8,12 +9,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.entity.LuckyMap; import com.badeling.msbot.entity.LuckyTable; import com.badeling.msbot.entity.LuckyThing; import com.badeling.msbot.repository.LuckyMapRepository; import com.badeling.msbot.repository.LuckyTableRepository; import com.badeling.msbot.repository.LuckyThingRepository; +import com.badeling.msbot.service.DrawService; import com.badeling.msbot.util.Loadfont2; @Component @@ -24,7 +27,9 @@ public class MsgZbCalculate { LuckyTableRepository luckyTableRepository; @Autowired LuckyThingRepository luckyThingRepository; - + @Autowired + DrawService drawService; + public String msgZb(String numb) { Date date = new Date(System.currentTimeMillis()); //几号 @@ -80,6 +85,35 @@ public String msgZb(String numb) { + "今日最佳玄学地图是"+"\n" + luckyMap +"\n" + "//-------------------//"; + + + String a1 = "您今日的运势指数为" +luckyRank(i); + String a2 = "运势最好的频道是"+ j +"频道哦!"; + String a3 = luckyTable; + String a4 = "宜:" + lgt.getGood(); + String a5 = lgt.getGoodThing(); + String a6 = "忌:" + lbt.getBad(); + String a7 = lbt.getBadThing(); + String a8 = "今日最佳玄学地图是:"; + String a9 = lm.getMap(); + + String mapUrl = MsbotConst.imageUrl + lm.getMapUrl().substring(15,lm.getMapUrl().length()-1).replaceAll("\\\\", "/"); + String roleUrl = MsbotConst.imageUrl + "class/0.png"; + File f = new File(MsbotConst.imageUrl + "class"); + File[] listFiles = f.listFiles(); + + int p = Math.abs((format2.format(date)+format1.format(date)+numb).hashCode()%listFiles.length); + File file = listFiles[p]; + + roleUrl = file.getParent() + "/" +file.getName(); + + String[] msg = {a1,a2,a3,a4,a5,a6,a7,a8,a9,mapUrl,roleUrl}; + try { + reply = drawService.zbImage(msg); + } catch (Exception e) { + reply = "出现未知的错误"; + e.printStackTrace(); + } return reply; } public String msgZb(String numb,String name) throws Exception { @@ -124,7 +158,7 @@ public String msgZb(String numb,String name) throws Exception { int count3 = luckyMapRepository.getCount(); m = m % count3; LuckyMap lm = luckyMapRepository.findByRandom(m); - + Map map = new HashMap(); map.put("name", name); map.put("star", "您今日的运势指数为" +luckyRank(i)); @@ -133,7 +167,7 @@ public String msgZb(String numb,String name) throws Exception { map.put("gThing", luckyThing); map.put("bThing", luckyBdThing); map.put("map", lm.getMap()); - map.put("mapUrl", lm.getMapUrl()); + map.put("mapUrl", lm.getMapUrl()); return Loadfont2.zbImage(map); } //指数 @@ -151,19 +185,19 @@ private String luckyRank(int i) { } } //指数 - private String luckyRank2(int i) { - if(i<5) { - return "1"; - }else if(i<10){ - return "2"; - }else if(i<45){ - return "3"; - }else if(i<80){ - return "4"; - }else{ - return "5"; - } + private String luckyRank2(int i) { + if(i<5) { + return "1"; + }else if(i<10){ + return "2"; + }else if(i<45){ + return "3"; + }else if(i<80){ + return "4"; + }else{ + return "5"; } + } public void msgAddMap(String raw_message, String imageCq) { LuckyMap luckyMap = new LuckyMap(); @@ -190,4 +224,4 @@ public String msgDeZb(String numb) { + "解签:"+lt.getLuckyThing(); return reply; } -} +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index 94f4e1b..c5c5fe9 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -1,11 +1,13 @@ package com.badeling.msbot.controller; import java.awt.AlphaComposite; +import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; +import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; @@ -16,88 +18,88 @@ public class NewImageUtils{ - - /** - * - * @Title: 构造图片 - * @Description: 生成水印并返回java.awt.image.BufferedImage - * @param file - * 源文件(图片) - * @param waterFile - * 水印文件(图片) - * @param x - * 距离右下角的X偏移量 - * @param y - * 距离右下角的Y偏移量 - * @param alpha - * 透明度, 选择值从0.0~1.0: 完全透明~完全不透明 - * @return BufferedImage - * @throws IOException - */ - public static BufferedImage watermark(File file, File waterFile, int x, int y, float alpha) throws IOException { - // 获取底图 - BufferedImage buffImg = ImageIO.read(file); - // 获取层图 - BufferedImage waterImg = ImageIO.read(waterFile); - // 创建Graphics2D对象,用在底图对象上绘图 - Graphics2D g2d = buffImg.createGraphics(); - int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 - int waterImgHeight = waterImg.getHeight();// 获取层图的高度 - // 在图形和图像中实现混合和透明效果 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - // 绘制 - g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); - g2d.dispose();// 释放图形上下文使用的系统资源 - return buffImg; - } - - public static BufferedImage watermark(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException { - // 创建Graphics2D对象,用在底图对象上绘图 - Graphics2D g2d = buffImg.createGraphics(); - int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 - int waterImgHeight = waterImg.getHeight();// 获取层图的高度 - // 在图形和图像中实现混合和透明效果 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - // 绘制 - g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); - g2d.dispose();// 释放图形上下文使用的系统资源 - return buffImg; - } - - public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int x, int y, float alpha) throws IOException { - // 底图直接传入 - // 获取层图 - BufferedImage waterImg = ImageIO.read(waterFile); - // 创建Graphics2D对象,用在底图对象上绘图 - Graphics2D g2d = buffImg.createGraphics(); - int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 - int waterImgHeight = waterImg.getHeight();// 获取层图的高度 - // 在图形和图像中实现混合和透明效果 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - // 绘制 - g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); - g2d.dispose();// 释放图形上下文使用的系统资源 - return buffImg; - } - /** - * 输出水印图片 - * - * @param buffImg - * 图像加水印之后的BufferedImage对象 - * @param savePath - * 图像加水印之后的保存路径 - */ - public void generateWaterFile(BufferedImage buffImg, String savePath) { - int temp = savePath.lastIndexOf(".") + 1; - try { - ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); - } catch (IOException e1) { - e1.printStackTrace(); - } - } - - - //原定的星星代码 + + /** + * + * @Title: 构造图片 + * @Description: 生成水印并返回java.awt.image.BufferedImage + * @param file + * 源文件(图片) + * @param waterFile + * 水印文件(图片) + * @param x + * 距离右下角的X偏移量 + * @param y + * 距离右下角的Y偏移量 + * @param alpha + * 透明度, 选择值从0.0~1.0: 完全透明~完全不透明 + * @return BufferedImage + * @throws IOException + */ + public static BufferedImage watermark(File file, File waterFile, int x, int y, float alpha) throws IOException { + // 获取底图 + BufferedImage buffImg = ImageIO.read(file); + // 获取层图 + BufferedImage waterImg = ImageIO.read(waterFile); + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 + return buffImg; + } + + public static BufferedImage watermark(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException { + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 + return buffImg; + } + + public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int x, int y, float alpha) throws IOException { + // 底图直接传入 + // 获取层图 + BufferedImage waterImg = ImageIO.read(waterFile); + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 + return buffImg; + } + /** + * 输出水印图片 + * + * @param buffImg + * 图像加水印之后的BufferedImage对象 + * @param savePath + * 图像加水印之后的保存路径 + */ + public void generateWaterFile(BufferedImage buffImg, String savePath) { + int temp = savePath.lastIndexOf(".") + 1; + try { + ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + + + //原定的星星代码 // private static BufferedImage makeStar() throws IOException { // int width = 27*1; @@ -115,7 +117,7 @@ public void generateWaterFile(BufferedImage buffImg, String savePath) { // //透明 // buffImg = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); // g2d.dispose(); -// g2d = buffImg.createGraphics(); +// g2d = buffImg.createGraphics(); // // 在图形和图像中实现混合和透明效果 // g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); // // 绘制 @@ -123,9 +125,9 @@ public void generateWaterFile(BufferedImage buffImg, String savePath) { // g2d.dispose();// 释放图形上下文使用的系统资源 // return buffImg; // } - -/** + + /** * 调整bufferedimage大小 * @param source BufferedImage 原始image * @param targetW int 目标宽 @@ -158,50 +160,132 @@ public static BufferedImage resizeBufferedImage(BufferedImage source, int target g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); g.dispose(); return target; - + + } + /** + * 传入的图像必须是正方形的 才会 圆形 如果是长方形的比例则会变成椭圆的 + * @return + * @throws IOException + */ + public static BufferedImage convertCircular(BufferedImage bi1) throws IOException { + // 透明底的图片 + BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); + Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1.getHeight()); + Graphics2D g2 = bi2.createGraphics(); + g2.setClip(shape); + // 使用 setRenderingHint 设置抗锯齿 + g2.drawImage(bi1, 0, 0, null); + // 设置颜色 + g2.setBackground(Color.green); + g2.dispose(); + + return bi2; + } + /** + * 旋转图片为指定角度 + * + * @param bufferedimage + * 目标图像 + * @param degree + * 旋转角度 + * @return + */ + public static BufferedImage rotateImage(final BufferedImage bufferedimage, + final int degree) { + int w = bufferedimage.getWidth(); + int h = bufferedimage.getHeight(); + int type = bufferedimage.getColorModel().getTransparency(); + BufferedImage img; + Graphics2D graphics2d; + (graphics2d = (img = new BufferedImage(w, h, type)) + .createGraphics()).setRenderingHint( + RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BILINEAR); + graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2); + graphics2d.drawImage(bufferedimage, 0, 0, null); + graphics2d.dispose(); + return img; } + /** - * 传入的图像必须是正方形的 才会 圆形 如果是长方形的比例则会变成椭圆的 - * @return - * @throws IOException - */ - public static BufferedImage convertCircular(BufferedImage bi1) throws IOException { - // 透明底的图片 - BufferedImage bi2 = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); - Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1.getHeight()); - Graphics2D g2 = bi2.createGraphics(); - g2.setClip(shape); - // 使用 setRenderingHint 设置抗锯齿 - g2.drawImage(bi1, 0, 0, null); - // 设置颜色 - g2.setBackground(Color.green); - g2.dispose(); - - return bi2; - } + * 图片设置圆角 + * @param srcImage + * @param radius + * @param border + * @param padding + * @return + * @throws IOException + */ + + public static BufferedImage setRadius(BufferedImage srcImage,int radius,int border,int padding)throws IOException{ + + int width = srcImage.getWidth(); + + int height = srcImage.getHeight(); + + int canvasWidth = width + padding *2; + + int canvasHeight = height + padding *2; + + BufferedImage image =new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB); + + Graphics2D gs = image.createGraphics(); + + gs.setComposite(AlphaComposite.Src); + + gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + gs.setColor(new Color(68,68,68)); + + gs.fill(new RoundRectangle2D.Float(0,0, canvasWidth, canvasHeight, radius, radius)); + + gs.setComposite(AlphaComposite.SrcAtop); + + gs.drawImage(setClip(srcImage, radius), padding, padding,null); + + if(border !=0){ + + gs.setColor(Color.GRAY); + + gs.setStroke(new BasicStroke(border)); + + gs.drawRoundRect(padding, padding, canvasWidth -2 * padding, canvasHeight -2 * padding, radius, radius); + + } + + gs.dispose(); + + return image; + + } + /** - * 旋转图片为指定角度 - * - * @param bufferedimage - * 目标图像 - * @param degree - * 旋转角度 - * @return - */ - public static BufferedImage rotateImage(final BufferedImage bufferedimage, - final int degree) { - int w = bufferedimage.getWidth(); - int h = bufferedimage.getHeight(); - int type = bufferedimage.getColorModel().getTransparency(); - BufferedImage img; - Graphics2D graphics2d; - (graphics2d = (img = new BufferedImage(w, h, type)) - .createGraphics()).setRenderingHint( - RenderingHints.KEY_INTERPOLATION, - RenderingHints.VALUE_INTERPOLATION_BILINEAR); - graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2); - graphics2d.drawImage(bufferedimage, 0, 0, null); - graphics2d.dispose(); - return img; - } -} + * 图片切圆角 + * @param srcImage + * @param radius + * @return + */ + + public static BufferedImage setClip(BufferedImage srcImage,int radius){ + + int width = srcImage.getWidth(); + + int height = srcImage.getHeight(); + + BufferedImage image =new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + + Graphics2D gs = image.createGraphics(); + + gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + gs.setClip(new RoundRectangle2D.Double(0,0, width, height, radius, radius)); + + gs.drawImage(srcImage,0,0,null); + + gs.dispose(); + + return image; + + } + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/service/DrawService.java b/src/main/java/com/badeling/msbot/service/DrawService.java index 455da03..57d96e8 100644 --- a/src/main/java/com/badeling/msbot/service/DrawService.java +++ b/src/main/java/com/badeling/msbot/service/DrawService.java @@ -29,5 +29,5 @@ public interface DrawService { String ignImage(String ignDate) throws Exception; - + String zbImage(String[] msg) throws Exception; } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 38ff839..2c7b088 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -52,6 +52,107 @@ public class DrawServiceImpl implements DrawService{ @Autowired FriendsRepository friendsRepository; + public static void main(String[] args) throws Exception { + String a1 = "您今日的运势指数为★☆☆☆☆"; + String a2 = "运势最好的频道是7频道哦!"; + String a3 = "寒风水冷隐作痛,鸡犬相闻闹晨曦。"; + String a4 = "宜:爬起源之塔"; + String a5 = "喜提4级克制之戒"; + String a6 = "忌:肝活动"; + String a7 = "这活动是人玩的吗??"; + String a8 = "今日最佳玄学地图是:"; + String a9 = "林中之城,韧性之林"; + + String roleUrl = ""; + + File f = new File("D:\\go-cqhttp\\data\\images\\class"); + File[] listFiles = f.listFiles(); + for(File file : listFiles) { + roleUrl = file.getParent() + "\\" +file.getName(); + System.out.println(roleUrl); + String imageUrl = "D:\\go-cqhttp\\data\\images\\zb\\19.jpg"; + String sourceFilePath = MsbotConst.imageUrl + "zb/background.png"; + + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + + //紫色条形框 + BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "zb/a1.png")); + + //人物 + BufferedImage roleImg = ImageIO.read(new File(roleUrl)); + roleImg = NewImageUtils.resizeBufferedImage(roleImg,188,210,false); + sourceFile = watermark(sourceFile, roleImg , 550, 30, 1.0f); + + //地图 + BufferedImage mapImg = ImageIO.read(new File(imageUrl)); + mapImg = NewImageUtils.resizeBufferedImage(mapImg,370,180,false); + mapImg = NewImageUtils.setRadius(mapImg,30,0,0); + sourceFile = watermark(sourceFile, buffImg1 , 450, 230, 1.0f); + sourceFile = watermark(sourceFile, mapImg , 460, 350, 1.0f); + + + Graphics2D g = sourceFile.createGraphics(); + Font font = Loadfont2.Font(22); + g.setFont(font); + g.setColor(new Color(230,230,230)); + //指数 + g.drawString(a1,65,65); + //频道 + g.drawString(a2,65,65+65); + //事件 + + if(a3.length()>16) { + g.drawString(a3.substring(0,16),65,65+65+35); + g.drawString(a3.substring(16),65,65+65+35+35); + }else { + g.drawString(a3,65,65+65+35); + } + //宜 + g.drawString(a4,65,65+65+30+110); + //宜事件 + if(a5.length()>16) { + g.drawString(a5.substring(0,16),65,65+65+30+110+35); + g.drawString(a5.substring(16),65,65+65+30+110+35+35); + }else { + g.drawString(a5,65,65+65+30+110+35); + } + + + //忌 + g.drawString(a6,65,65+65+30+110+30+130); + //忌事件 + if(a7.length()>16) { + g.drawString(a7.substring(0,16),65,65+65+30+110+30+130+35); + g.drawString(a7.substring(16),65,65+65+30+110+30+130+35+35); + }else { + g.drawString(a7,65,65+65+30+110+30+130+35); + } + + + //地图 + g.drawString(a8,480,65+65+30+110); + //地图名 + g.drawString(a9,480,65+65+30+110+35); + + g.dispose(); + +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + sourceFile.getWidth(), sourceFile.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, + Color.WHITE, null); + // write to jpeg file +// ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + } + + } + @Autowired private MonvTimeRepository monvTimeRepository; @@ -884,5 +985,99 @@ public String startDrawMs() throws Exception { return "[CQ:image,file=" + uuid +".jpg]"; } + @Override + public String zbImage(String[] msg) throws Exception { + String a1 = msg[0]; + String a2 = msg[1]; + String a3 = msg[2]; + String a4 = msg[3]; + String a5 = msg[4]; + String a6 = msg[5]; + String a7 = msg[6]; + String a8 = msg[7]; + String a9 = msg[8]; + String imageUrl = msg[9]; + String roleUrl = msg[10]; + + String sourceFilePath = MsbotConst.imageUrl + "zb/background.png"; + + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + + //紫色条形框 + BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "zb/a1.png")); + + //人物 + BufferedImage roleImg = ImageIO.read(new File(roleUrl)); + roleImg = NewImageUtils.resizeBufferedImage(roleImg,188,210,false); + sourceFile = watermark(sourceFile, roleImg , 550, 30, 1.0f); + + //地图 + BufferedImage mapImg = ImageIO.read(new File(imageUrl)); + mapImg = NewImageUtils.resizeBufferedImage(mapImg,370,180,false); + mapImg = NewImageUtils.setRadius(mapImg,30,0,0); + sourceFile = watermark(sourceFile, buffImg1 , 450, 230, 1.0f); + sourceFile = watermark(sourceFile, mapImg , 460, 350, 1.0f); + + + Graphics2D g = sourceFile.createGraphics(); + Font font = Loadfont2.Font(22); + g.setFont(font); + g.setColor(new Color(230,230,230)); + //指数 + g.drawString(a1,65,65); + //频道 + g.drawString(a2,65,65+65); + //事件 + + if(a3.length()>16) { + g.drawString(a3.substring(0,16),65,65+65+35); + g.drawString(a3.substring(16),65,65+65+35+35); + }else { + g.drawString(a3,65,65+65+35); + } + //宜 + g.drawString(a4,65,65+65+30+110); + //宜事件 + if(a5.length()>16) { + g.drawString(a5.substring(0,16),65,65+65+30+110+35); + g.drawString(a5.substring(16),65,65+65+30+110+35+35); + }else { + g.drawString(a5,65,65+65+30+110+35); + } + + + //忌 + g.drawString(a6,65,65+65+30+110+30+130); + //忌事件 + if(a7.length()>16) { + g.drawString(a7.substring(0,16),65,65+65+30+110+30+130+35); + g.drawString(a7.substring(16),65,65+65+30+110+30+130+35+35); + }else { + g.drawString(a7,65,65+65+30+110+30+130+35); + } + + + //地图 + g.drawString(a8,480,65+65+30+110); + //地图名 + g.drawString(a9,480,65+65+30+110+35); + + g.dispose(); + +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + sourceFile.getWidth(), sourceFile.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, + Color.WHITE, null); + // write to jpeg file +// ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 2a43215..1f4a1c8 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -132,7 +132,7 @@ public ReplyMsg receive(String msg) { try { if(msg.contains("message_type")) { - if(msg.contains("{\"channel_id\":")) { + if(msg.contains("\"channel_id\":")) { channelService.receive(msg); return null; } @@ -150,11 +150,11 @@ public ReplyMsg receive(String msg) { } catch (IOException e) { e.printStackTrace(); } - - if(receiveMsg.getMessage_type().equals("private")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { - System.err.println(receiveMsg.toString()); - return handlePrivateMsg(receiveMsg); - } + //私聊 + //if(receiveMsg.getMessage_type().equals("private")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { + // System.err.println(receiveMsg.toString()); + // return handlePrivateMsg(receiveMsg); + // } //黑名单的人 for(String temp : MsbotConst.blackList) { diff --git a/src/main/java/com/badeling/msbot/util/Loadfont2.java b/src/main/java/com/badeling/msbot/util/Loadfont2.java index 6e047ba..c215025 100644 --- a/src/main/java/com/badeling/msbot/util/Loadfont2.java +++ b/src/main/java/com/badeling/msbot/util/Loadfont2.java @@ -126,6 +126,13 @@ public static java.awt.Font Font(float i) { return font;//返回字体 } + public static java.awt.Font Font2(float i) { + String root= MsbotConst.imageUrl + "qd";//项目根目录路径 +// String root = "D:\\go-cqhttp\\data\\images\\qd"; + Font font = Loadfont2.loadFont(root+"/微软雅黑.ttf", i);//调用 + return font;//返回字体 + } + public static java.awt.Font Font2(){ String root= MsbotConst.imageUrl + "qd"; // String root = "D:\\go-cqhttp\\data\\images\\qd"; From 294b5319d604c03a22b95109085d20e14181ab14 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 24 Jun 2022 19:07:24 +0800 Subject: [PATCH 17/66] =?UTF-8?q?=E5=8D=A0=E4=BB=86=E9=80=82=E9=85=8DCMS?= =?UTF-8?q?=E5=B8=8C=E6=8B=89=E5=8C=BA=E9=A2=91=E9=81=93=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/controller/MsgZbCalculate.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java b/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java index 6835f8d..668c8b2 100644 --- a/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java +++ b/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java @@ -38,11 +38,12 @@ public String msgZb(String numb) { SimpleDateFormat format2 = new SimpleDateFormat("u"); String reply = new String(); int i = Math.abs((numb+format1.format(date)+format2.format(date)).hashCode()%97); - int j = Math.abs((numb+format2.format(date)+format1.format(date)).hashCode()%20)+1; + int j = Math.abs((numb+format2.format(date)+format1.format(date)).hashCode()%12)+1; int k = Math.abs((format1.format(date)+ numb +format2.format(date)).hashCode()); int l = Math.abs((format2.format(date)+ numb +format1.format(date)).hashCode()); int m = Math.abs((format1.format(date)+format2.format(date)+numb).hashCode()); int n = Math.abs((format2.format(date)+format1.format(date)+numb).hashCode()); + /** * i 运势 * j 频道 @@ -86,6 +87,7 @@ public String msgZb(String numb) { + luckyMap +"\n" + "//-------------------//"; + System.out.println(reply); String a1 = "您今日的运势指数为" +luckyRank(i); String a2 = "运势最好的频道是"+ j +"频道哦!"; @@ -97,7 +99,10 @@ public String msgZb(String numb) { String a8 = "今日最佳玄学地图是:"; String a9 = lm.getMap(); + String mapUrl = MsbotConst.imageUrl + lm.getMapUrl().substring(15,lm.getMapUrl().length()-1).replaceAll("\\\\", "/"); + + String roleUrl = MsbotConst.imageUrl + "class/0.png"; File f = new File(MsbotConst.imageUrl + "class"); File[] listFiles = f.listFiles(); From 85c8b9066bfe4bdb7fc6572132c10341996f617b Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Thu, 7 Jul 2022 13:47:48 +0800 Subject: [PATCH 18/66] =?UTF-8?q?=E5=90=8C=E6=AD=A5v1.2=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- .../msbot/serviceImpl/MsgServiceImpl.java | 21 +- .../serviceImpl/MvpImageServiceImpl.java | 253 +++++++++--------- 3 files changed, 148 insertions(+), 132 deletions(-) diff --git a/README.md b/README.md index 8657e43..c14dd64 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,11 @@ 前台监听地址 host: 127.0.0.1 port: 5700 -视频搭建流程 https://www.bilibili.com/video/BV14R4y1G7sM +# 视频搭建流程: + +Linux服务器搭建:https://www.bilibili.com/video/BV14R4y1G7sM + +windows服务器搭建:https://www.bilibili.com/video/BV1pW4y1r7JS ## 静态资源 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 1f4a1c8..40ade39 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1,9 +1,8 @@ package com.badeling.msbot.serviceImpl; import java.io.IOException; -import java.sql.Timestamp; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; -import java.time.Instant; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; @@ -13,6 +12,7 @@ import java.util.Random; import java.util.Set; import java.util.TreeSet; +import java.sql.Timestamp; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; @@ -528,8 +528,8 @@ private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { } } - - if(reReadMsg.getMes_count()>300) { + + if(reReadMsg.getMes_count()>300&&reReadMsg.getCount()==1) { reReadMsg.setMes_count(1); Random r = new Random(); @@ -1903,7 +1903,18 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); Object result = engine.eval(raw_message.substring(raw_message.indexOf(MsbotConst.botName)+2)); - replyMsg.setReply(raw_message.substring(receiveMsg.getRaw_message().indexOf(MsbotConst.botName)+2)+"="+result.toString()); + //更改结果格式 + DecimalFormat myformat = new DecimalFormat(); + myformat.applyPattern("##,###.00000"); + Double d = Double.valueOf(result.toString()); + String formatResult = myformat.format(d); + if(formatResult.startsWith(".")) { + formatResult = "0"+formatResult; + } + while(formatResult.contains(".")&&(formatResult.endsWith("0")||formatResult.endsWith("."))) { + formatResult = formatResult.substring(0, formatResult.length()-1); + } + replyMsg.setReply(raw_message.substring(receiveMsg.getRaw_message().indexOf(MsbotConst.botName)+2)+"="+formatResult); return replyMsg; } }catch (Exception e) { diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java index 2a81558..47028b3 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java @@ -31,16 +31,16 @@ @Component public class MvpImageServiceImpl implements MvpImageService{ - - @Override - public String[] handImageMsg(ReceiveMsg receiveMsg) { - - String raw_message = receiveMsg.getMessage(); - int questionIndex = raw_message.indexOf(",url=")+5; - int answerIndex = raw_message.indexOf("]"); - - String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); - String imageUrl = raw_message.substring(questionIndex, answerIndex); + + @Override + public String[] handImageMsg(ReceiveMsg receiveMsg) { + + String raw_message = receiveMsg.getMessage(); + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; +// String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); + String imageUrl = raw_message.substring(questionIndex, answerIndex); // try { // String NewfileName = CoolQconst.imageUrl + imageName +".cqimg"; // FileReader fileReader = new FileReader(NewfileName); @@ -61,73 +61,74 @@ public String[] handImageMsg(ReceiveMsg receiveMsg) { // }catch(Exception e) { // return null; // } - try { - download(imageUrl, imageName,MsbotConst.imageUrl,imageName); - } catch (Exception e) { - return null; - } - - String back = generalBasic(MsbotConst.imageUrl+imageName); - String[] result = new String [2]; - result[0] = back; - result[1] = imageName; - return result; - } - - @Override - public String saveImage(String raw_message) { - System.out.println(raw_message); - int questionIndex = raw_message.indexOf(",url=")+5; - int answerIndex = raw_message.indexOf("]"); + try { + download(imageUrl, imageName,MsbotConst.imageUrl,imageName); + } catch (Exception e) { + return null; + } + + String back = generalBasic(MsbotConst.imageUrl+imageName); + String[] result = new String [2]; + result[0] = back; + result[1] = imageName; + return result; + } + + @Override + public String saveImage(String raw_message) { + System.out.println(raw_message); + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); // [CQ:image,file=6BBE03D40F0DA08AD91BBF6C627AEEE5,url=http://gchat.qpic.cn/gchatpic_new/123179118/4193168946-3038401046-6BBE03D40F0DA08AD91BBF6C627AEEE5/0?term=2]","raw_message":"[CQ:image,file=6BBE03D40F0DA08AD91BBF6C627AEEE5,url=http://gchat.qpic.cn/gchatpic_new/123179118/4193168946-3038401046-6BBE03D40F0DA08AD91BBF6C627AEEE5/0?term=2]","font":0,"sender":{"user_id":123179118,"nickname":"神话ヤ北真天","card":"神话ヤ北真天","sex":"unknown","age":0,"area":"unknown","level":"unknown","role":"admin","title":"unknown"},"time":1600180430,"post_type":"message","message_type":"group"} // String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")); - String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); - String imageUrl = raw_message.substring(questionIndex, answerIndex); - try { - download(imageUrl, imageName,MsbotConst.imageUrl+"save/",imageName); - return imageName; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - - //将图片下载到电脑 - private void download(String urlString, String filename,String savePath,String imageName) throws Exception { - // 构造URL - URL url = new URL(urlString); +// String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; + String imageUrl = raw_message.substring(questionIndex, answerIndex); + try { + download(imageUrl, imageName,MsbotConst.imageUrl+"save/",imageName); + return imageName; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + + //将图片下载到电脑 + private void download(String urlString, String filename,String savePath,String imageName) throws Exception { + // 构造URL + URL url = new URL(urlString); // 打开连接 - URLConnection con = url.openConnection(); + URLConnection con = url.openConnection(); //设置请求超时为5s - con.setConnectTimeout(5*1000); + con.setConnectTimeout(5*1000); // 输入流 - InputStream is = con.getInputStream(); - + InputStream is = con.getInputStream(); + // 1K的数据缓冲 - byte[] bs = new byte[1024]; + byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出的文件流 - File sf=new File(savePath); - if(!sf.exists()){ - sf.mkdirs(); - } - // 新的图片文件名 = 编号 +"."图片扩展名 - String newFileName = imageName; - OutputStream os = new FileOutputStream(sf.getPath()+"/"+newFileName); + File sf=new File(savePath); + if(!sf.exists()){ + sf.mkdirs(); + } + // 新的图片文件名 = 编号 +"."图片扩展名 + String newFileName = imageName; + OutputStream os = new FileOutputStream(sf.getPath()+"/"+newFileName); // 开始读取 - while ((len = is.read(bs)) != -1) { - os.write(bs, 0, len); - } + while ((len = is.read(bs)) != -1) { + os.write(bs, 0, len); + } // 完毕,关闭所有链接 - os.close(); - is.close(); - - } + os.close(); + is.close(); - //上传图片识别 - public static String generalBasic(String imgUrl) { + } + + //上传图片识别 + public static String generalBasic(String imgUrl) { // 请求url String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"; try { @@ -149,9 +150,9 @@ public static String generalBasic(String imgUrl) { } return null; } - - //获取token - public static String getAuth() { + + //获取token + public static String getAuth() { // 官网获取的 API Key 更新为你注册的 String clientId = MsbotConst.baiduKey; // 官网获取的 Secret Key 更新为你注册的 @@ -192,26 +193,26 @@ public static String getAuth(String ak, String sk) { String access_token = jsonObject.getString("access_token"); return access_token; } catch (Exception e) { - + } return null; } - @Override - public String saveTempImage(String raw_message) throws Exception { - String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; - download(raw_message, imageName , MsbotConst.imageUrl , imageName); - return imageName; - } - - @Override - public String saveFlagRaceImage(String raw_message,String imageNewName) { - int questionIndex = raw_message.indexOf(",url=")+5; - int answerIndex = raw_message.indexOf("]"); - - String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); - String imageUrl = raw_message.substring(questionIndex, answerIndex); + @Override + public String saveTempImage(String raw_message) throws Exception { + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; + download(raw_message, imageName , MsbotConst.imageUrl , imageName); + return imageName; + } + + @Override + public String saveFlagRaceImage(String raw_message,String imageNewName) { + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; +// String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); + String imageUrl = raw_message.substring(questionIndex, answerIndex); // try { // String NewfileName = CoolQconst.imageUrl + imageName + ".cqimg"; // FileReader fileReader = new FileReader(NewfileName); @@ -232,23 +233,23 @@ public String saveFlagRaceImage(String raw_message,String imageNewName) { // }catch(Exception e) { // return null; // } - - try { - download(imageUrl, imageName,MsbotConst.imageUrl+"FR/",imageNewName); - return imageName; - } catch (Exception e) { - return null; - } - } - - @Override - public String[] handHigherImageMsg(ReceiveMsg receiveMsg) { - String raw_message = receiveMsg.getMessage(); - int questionIndex = raw_message.indexOf(",url=")+5; - int answerIndex = raw_message.indexOf("]"); - - String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); - String imageUrl = raw_message.substring(questionIndex, answerIndex); + + try { + download(imageUrl, imageName,MsbotConst.imageUrl+"FR/",imageNewName); + return imageName; + } catch (Exception e) { + return null; + } + } + + @Override + public String[] handHigherImageMsg(ReceiveMsg receiveMsg) { + String raw_message = receiveMsg.getMessage(); + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; +// String imageName = raw_message.substring(raw_message.indexOf("file=")+5,raw_message.indexOf(",url=")-6); + String imageUrl = raw_message.substring(questionIndex, answerIndex); // try { // String NewfileName = CoolQconst.imageUrl + imageName +".cqimg"; // FileReader fileReader = new FileReader(NewfileName); @@ -269,22 +270,22 @@ public String[] handHigherImageMsg(ReceiveMsg receiveMsg) { // }catch(Exception e) { // return null; // } - - try { - download(imageUrl, imageName,MsbotConst.imageUrl,imageName); - } catch (Exception e) { - return null; - } - - String back = generalBasic2(MsbotConst.imageUrl+imageName); - String[] result = new String [2]; - result[0] = back; - result[1] = imageName; - return result; - } - - private String generalBasic2(String imgUrl) { - // 请求url + + try { + download(imageUrl, imageName,MsbotConst.imageUrl,imageName); + } catch (Exception e) { + return null; + } + + String back = generalBasic2(MsbotConst.imageUrl+imageName); + String[] result = new String [2]; + result[0] = back; + result[1] = imageName; + return result; + } + + private String generalBasic2(String imgUrl) { + // 请求url String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"; try { // 本地文件路径 @@ -304,10 +305,10 @@ private String generalBasic2(String imgUrl) { e.printStackTrace(); } return null; - } - - //表格识图 - public static String getOrcTemplateRequest(String imgUrl) { + } + + //表格识图 + public static String getOrcTemplateRequest(String imgUrl) { // 请求url String url = "https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise"; try { @@ -319,14 +320,14 @@ public static String getOrcTemplateRequest(String imgUrl) { String recogniseParams = "templateSign=47714237acb4991b0449de6e409dd519&image=" + URLEncoder.encode(imgStr, "UTF-8"); // 请求分类器参数 // String classifierParams = "classifierId=your_classfier_id&image=" + URLEncoder.encode(imgStr, "UTF-8"); - - + + String accessToken = getAuth(); // 请求模板识别 String result = HttpUtil.post(url, accessToken, recogniseParams); // 请求分类器识别 // String result = HttpUtil.post(recogniseUrl, accessToken, classifierParams); - + System.out.println(result); return result; } catch (Exception e) { @@ -334,6 +335,6 @@ public static String getOrcTemplateRequest(String imgUrl) { } return null; } - - -} + + +} \ No newline at end of file From 7064ea2329bd63559f49098c8489609f8073690a Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 8 Jul 2022 09:29:07 +0800 Subject: [PATCH 19/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 138 +++++++++--------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 40ade39..653c671 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1580,74 +1580,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } - - if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { - String mes; - Timestamp time_now = new Timestamp(System.currentTimeMillis()); - - SimpleDateFormat formatHours = new SimpleDateFormat("HH"); - int hours = Integer.parseInt(formatHours.format(time_now)); - - if(hours>=0 && hours<=11){ - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String date_now = df.format(time_now); - MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); - - if(monvTime == null) { - //查询无角色 - monvTime = new MonvTime(); - //设置群名片 如果没有 设置昵称 - if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { - monvTime.setName(receiveMsg.getSender().getNickname()); - }else { - monvTime.setName(receiveMsg.getSender().getCard()); - } - //设置QQ号 - monvTime.setUser_id(receiveMsg.getSender().getUser_id()); - //设置群号 - if(receiveMsg.getGroup_id().contains("101577006")) { - monvTime.setGroup_id("398359236"); - }else { - monvTime.setGroup_id(receiveMsg.getGroup_id()); - } - Timestamp timestamp = new Timestamp(0); - monvTime.setUpdateTime(timestamp); - monvTime.setDate(date_now); - monvTime.setPrize(0,0,0,0,0); - monvTime = monvTimeRepository.save(monvTime); - } - - long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; - if (cd_time >= MsbotConst.monv_cd){ - monvTime.setUpdateTime(time_now); - monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); - - try { - mes = drawService.startDrawMs(monvTime); - } catch (Exception e) { - e.printStackTrace(); - mes = "图片文件缺失。"; - } - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; - } - else { - mes = "抽奖冷却中,剩余"+(MsbotConst.monv_cd-cd_time)+"秒"; - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; - } - } - else { - mes = "抽奖时间: 每日0-12点,请稍后..."; - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; - } - - } - //官网 if(raw_message.startsWith(MsbotConst.botName+"官网")||raw_message.startsWith(MsbotConst.botName+" 官网")) { @@ -1751,7 +1683,75 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } } - + + //魔女 + if(raw_message.contains("抽奖")||raw_message.contains("魔女")||raw_message.contains("百分百")) { + String mes; + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + + SimpleDateFormat formatHours = new SimpleDateFormat("HH"); + int hours = Integer.parseInt(formatHours.format(time_now)); + + if(hours>=0 && hours<=11){ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + MonvTime monvTime = monvTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + + if(monvTime == null) { + //查询无角色 + monvTime = new MonvTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + monvTime.setName(receiveMsg.getSender().getNickname()); + }else { + monvTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + monvTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + monvTime.setGroup_id("398359236"); + }else { + monvTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(0); + monvTime.setUpdateTime(timestamp); + monvTime.setDate(date_now); + monvTime.setPrize(0,0,0,0,0); + monvTime = monvTimeRepository.save(monvTime); + } + + long cd_time = (time_now.getTime()-monvTime.getUpdateTime().getTime())/ 1000; + if (cd_time >= MsbotConst.monv_cd){ + monvTime.setUpdateTime(time_now); + monvTimeRepository.modifyUpdateTime(monvTime.getId(), monvTime.getUpdateTime()); + + try { + mes = drawService.startDrawMs(monvTime); + } catch (Exception e) { + e.printStackTrace(); + mes = "图片文件缺失。"; + } + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + } + else { + mes = "抽奖冷却中,剩余"+(MsbotConst.monv_cd-cd_time)+"秒"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + } + } + else { + mes = "抽奖时间: 每日0-12点,请稍后..."; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + } + + } + if(raw_message.startsWith(MsbotConst.botName+"抽签")||raw_message.startsWith(MsbotConst.botName+"运势")) { String reply = new String(); reply = msgZbCalculate.msgDeZb(receiveMsg.getUser_id()); From efc9f64720e8d1815223a8468126f3b487737eeb Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 22 Jul 2022 15:11:29 +0800 Subject: [PATCH 20/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 683 +++++++++--------- 1 file changed, 343 insertions(+), 340 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 653c671..eeb71eb 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -61,57 +61,195 @@ @Component public class MsgServiceImpl implements MsgService{ + @Autowired + RankInfoRepository rankInfoRepository; + @Autowired + QuizOzQuestionRepository quizOzQuestionRepository; + @Autowired + QuizOzAnswerRepository quizOzAnswerRepository; @Autowired private MsgRepository msgRepository; - @Autowired private MsgZbCalculate msgZbCalculate; - @Autowired private GroupMsgService groupMsgService; - @Autowired private MvpImageService mvpImageService; - @Autowired private DrawService drawService; - @Autowired private RankService rankService; - @Autowired private ChannelService channelService; - @Autowired private RereadSentenceRepository rereadSentenceRepository; - @Autowired private RereadTimeRepository rereadTimeRepository; - @Autowired private RoleDmgRepository roleDmgRepository; - @Autowired private PrivateService privateService; - @Autowired private WzXmlService wzXmlService; - @Autowired private MsgNoPrefixRepository msgNoPrefixRepository; - - @Autowired - RankInfoRepository rankInfoRepository; - @Autowired - QuizOzQuestionRepository quizOzQuestionRepository; + private MonvTimeRepository monvTimeRepository; - @Autowired - QuizOzAnswerRepository quizOzAnswerRepository; + public static int[] starForceDesc(int level,int stat,int att,int star) { + Map> starForceDataAfter16 = starForceDataAfter16(); + Map map = starForceDataAfter16.get(level); + while(star>0) { + stat = starForceStatDesc(star, stat, map.get("stat")); + att = starForceAttDesc(star,att,map.get("attWeapon")); + star--; + } + return new int[]{stat,att}; + } - @Autowired - private MonvTimeRepository monvTimeRepository; + public static int[] starForce(int level,int stat,int att,int nowStar,int targetStar,Boolean isWeapon) { + Map> starForceDataAfter16 = starForceDataAfter16(); + Map map = starForceDataAfter16.get(level); + if(isWeapon) { + while(nowStar=15) { + totalAtt = totalAtt + att16[star-15]; + } + return totalAtt; + } + + private static int starForceAtt(int star,int totalAtt,int[] att16) { + if(star<15) { + totalAtt = totalAtt + totalAtt/50 + 1; + }else { + totalAtt = totalAtt + att16[star-15]; + } + return totalAtt; + } + private static int starForceAttDesc(int star,int totalAtt,int[] att16) { + int before = totalAtt; + if(star<=15) { + if(totalAtt%50> starForceDataAfter16() { + Map> map = new HashMap<>(); + + Map map130 = new HashMap<>(); + map130.put("stat", new int[] {7,7,7,7,7}); + map130.put("att", new int[] {7,8,9,10,11}); + map130.put("attWeapon", new int[] {6,7,7,8,9}); + map.put(130, map130); + + Map map140 = new HashMap<>(); + map140.put("stat", new int[] {9,9,9,9,9,9,9,0,0,0}); + map140.put("att", new int[] {8,9,10,11,12,13,15,17,19,21}); + map140.put("attWeapon", new int[] {7,8,8,9,10,11,12,30,31,32}); + map.put(140, map140); + + Map map150 = new HashMap<>(); + map150.put("stat", new int[] {11,11,11,11,11,11,11,0,0,0}); + map150.put("att", new int[] {9,10,11,12,13,14,16,18,20,22}); + map150.put("attWeapon", new int[] {8,9,9,10,11,12,13,31,32,33}); + map.put(150, map150); + + Map map160 = new HashMap<>(); + map160.put("stat", new int[] {13,13,13,13,13,13,13,0,0,0}); + map160.put("att", new int[] {10,11,12,13,14,15,17,19,21,23}); + map160.put("attWeapon", new int[] {9,9,10,11,12,13,14,32,33,34}); + map.put(160, map160); + + Map map200 = new HashMap<>(); + map200.put("stat", new int[] {15,15,15,15,15,15,15,0,0,0}); + map200.put("att", new int[] {12,13,14,15,16,17,19,21,23,25}); + map200.put("attWeapon", new int[] {13,13,14,14,15,16,17,34,35,36}); + map.put(200, map200); + + return map; + } + + private static double defAndign(double def, double ign) { + double i = Double.parseDouble(String.format("%.2f", 100-(def-ign*def/100))); + if(i<0) { + i=0; + } + if(i>100) { + i=100; + } + return i; + } + + public static int getResult(String A, String B) { + if(A.equals(B)) { + return 0; + } + //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 + int[][] dp = new int[A.length() + 1][B.length() + 1]; + for(int i = 1;i <= A.length();i++) + dp[i][0] = i; + for(int j = 1;j <= B.length();j++) + dp[0][j] = j; + for(int i = 1;i <= A.length();i++) { + for(int j = 1;j <= B.length();j++) { + if(A.charAt(i - 1) == B.charAt(j - 1)) + dp[i][j] = dp[i - 1][j - 1]; + else { + dp[i][j] = Math.min(dp[i - 1][j] + 1, + Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); + } + } + } + return dp[A.length()][B.length()]; + } + @Override public ReplyMsg receive(String msg) { ReceiveMsg receiveMsg = null; @@ -120,7 +258,7 @@ public ReplyMsg receive(String msg) { if(msgList.contains(msg)) { return null; } - if(msgList.size()>128) { + if(msgList.size()>128) { for(int i=0;i<16;i++) { Iterator iterator = msgList.iterator(); msgList.remove(iterator.next()); @@ -128,8 +266,8 @@ public ReplyMsg receive(String msg) { } msgList.add(msg); GlobalVariable.setMsgList(msgList); - - + + try { if(msg.contains("message_type")) { if(msg.contains("\"channel_id\":")) { @@ -155,47 +293,52 @@ public ReplyMsg receive(String msg) { // System.err.println(receiveMsg.toString()); // return handlePrivateMsg(receiveMsg); // } - + //黑名单的人 for(String temp : MsbotConst.blackList) { if(receiveMsg.getUser_id().equals(temp)) { return null; } } - - if(receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { - System.out.println(receiveMsg.toString()); - return handleNameMsg(receiveMsg); - }else if(receiveMsg.getRaw_message().startsWith("[CQ:at,qq="+MsbotConst.botId+"]")){ - receiveMsg.setRaw_message(receiveMsg.getRaw_message().replace("[CQ:at,qq="+MsbotConst.botId+"]", MsbotConst.botName)); - System.out.println(receiveMsg.toString()); - return handleNameMsg(receiveMsg); - }else if((receiveMsg.getRaw_message().contains("气象")||receiveMsg.getRaw_message().contains("MVP"))&&receiveMsg.getRaw_message().length()<=40){ - System.out.println(receiveMsg.toString()); - return null; + + + if (receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { + System.out.println(receiveMsg.toString()); + return handleNameMsg(receiveMsg); + } + else if (receiveMsg.getRaw_message().startsWith("[CQ:at,qq=" + MsbotConst.botId + "]")) { + receiveMsg.setRaw_message(receiveMsg.getRaw_message().replace("[CQ:at,qq=" + MsbotConst.botId + "]", MsbotConst.botName)); + System.out.println(receiveMsg.toString()); + return handleNameMsg(receiveMsg); + } + else if ((receiveMsg.getRaw_message().contains("气象") || receiveMsg.getRaw_message().contains("MVP")) && receiveMsg.getRaw_message().length() <= 40) { + System.out.println(receiveMsg.toString()); + return null; // return handleMvpMsg(receiveMsg); - }else if(receiveMsg.getRaw_message().contains("[CQ:image,file=")){ - //识别气象图 - System.out.println(receiveMsg.toString()); - if(receiveMsg.getRaw_message().contains("高精度识图")) { - return handRecognize2(receiveMsg); - } - if(receiveMsg.getRaw_message().contains("识图")) { - return handRecognize(receiveMsg); - } - if(receiveMsg.getRaw_message().startsWith("39")) { - return handRecognizeOz39(receiveMsg); - } - }else if(receiveMsg.getRaw_message().length()>=2&&receiveMsg.getRaw_message().substring(0,2).contains("翻译")){ - System.out.println(receiveMsg.toString()); - return handTransMsg(receiveMsg); - }else if(receiveMsg.getRaw_message().length()>=4&&receiveMsg.getRaw_message().startsWith("联盟查询")) { - return handLegionRank(receiveMsg); - }else if(receiveMsg.getRaw_message().length()>=4&&receiveMsg.getRaw_message().startsWith("查询绑定")) { + } else if (receiveMsg.getRaw_message().contains("[CQ:image,file=")) { + //识别气象图 + System.out.println(receiveMsg.toString()); + if (receiveMsg.getRaw_message().contains("高精度识图")) { + return handRecognize2(receiveMsg); + } + if (receiveMsg.getRaw_message().contains("识图")) { + return handRecognize(receiveMsg); + } + if (receiveMsg.getRaw_message().startsWith("39")) { + return handRecognizeOz39(receiveMsg); + } + } + else if (receiveMsg.getRaw_message().length() >= 2 && receiveMsg.getRaw_message().substring(0, 2).contains("翻译")) { + System.out.println(receiveMsg.toString()); + return handTransMsg(receiveMsg); + } else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message().startsWith("联盟查询")) { + return handLegionRank(receiveMsg); + } + else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message().startsWith("查询绑定")) { // 查询绑定badeling - return handAddRankName(receiveMsg); - } - + return handAddRankName(receiveMsg); + } + //收币 or 卖币 // Pattern r = Pattern.compile(".*\\d+[e|E|\\亿].*"); // Matcher m = r.matcher(receiveMsg.getRaw_message()); @@ -203,14 +346,32 @@ public ReplyMsg receive(String msg) { // if(matches) { // handMemberSellAndBuy(receiveMsg); // } - + + //禁言信息 + List result = msgNoPrefixRepository.findMsgNPList(); + for(MsgNoPrefix m : result) { + if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { + System.out.println(m.getAnswer()); + if (m.getAnswer().equals("禁言")){ + ReplyMsg replyMsg = new ReplyMsg(); + replyMsg.setAt_sender(true); + replyMsg.setAuto_escape(false); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + System.out.println(replyMsg); + return replyMsg; + } + else{ + handReplyMsg(receiveMsg); + } + } + } //re-read - handReplyMsg(receiveMsg); receiveMsg.setRaw_message(receiveMsg.getMessage()); return handRereadMsg(receiveMsg); - - } + } + private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { //识图 String[] result = mvpImageService.handHigherImageMsg(receiveMsg); @@ -222,9 +383,9 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { Map backMessage = (Map) JSONObject.parse(result[0]); @SuppressWarnings("unchecked") List> list = (List>) backMessage.get("words_result"); - + int count = list.size(); - + for(int i=0;i answers = MatchQoz.getAnswers(); Iterator iterator = answers.iterator(); - + reply = reply + "所有答案 : "; int k = 16; QuizOzAnswer MatchQoa = null; @@ -261,7 +422,7 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { }else { reply = reply + "\r\n \r\n"; } - + if(getResult(next.getAnswer(),a)<=k) { k=getResult(next.getAnswer(),a); MatchQoa = next; @@ -279,7 +440,7 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { MatchQoa = next; } } - + reply = reply + "匹配答案 : " + MatchQoa.getAnswer() + "\r\n"; ReplyMsg replyMsg = new ReplyMsg(); replyMsg.setReply(reply); @@ -291,6 +452,7 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { return replyMsg; } } + // handAddRankName private ReplyMsg handAddRankName(ReceiveMsg receiveMsg) { ReplyMsg replyMsg = new ReplyMsg(); @@ -313,7 +475,7 @@ private ReplyMsg handAddRankName(ReceiveMsg receiveMsg) { } return replyMsg; } - + private ReplyMsg handLegionRank(ReceiveMsg receiveMsg) { ReplyMsg replyMsg = new ReplyMsg(); String raw_message = receiveMsg.getRaw_message(); @@ -323,7 +485,7 @@ private ReplyMsg handLegionRank(ReceiveMsg receiveMsg) { if(raw_message.equals("")) { RankInfo rankInfo = rankInfoRepository.getInfoByUserId(receiveMsg.getUser_id()); if(rankInfo==null) { - replyMsg.setReply("请先绑定角色\r\n" + + replyMsg.setReply("请先绑定角色\r\n" + "例如:查询绑定badeling"); return replyMsg; }else { @@ -335,7 +497,7 @@ private ReplyMsg handLegionRank(ReceiveMsg receiveMsg) { String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); RankInfo rankInfo = rankInfoRepository.getInfoByUserId(findNumber); if(rankInfo==null) { - replyMsg.setReply("请先绑定角色\r\n" + + replyMsg.setReply("请先绑定角色\r\n" + "例如:查询绑定badeling"); return replyMsg; }else { @@ -347,26 +509,27 @@ private ReplyMsg handLegionRank(ReceiveMsg receiveMsg) { String legionForBtOrLara = rankService.getRank(name); replyMsg.setReply(legionForBtOrLara); - + GroupMsg groupMsg = new GroupMsg(); groupMsg.setAuto_escape(false); groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); groupMsg.setMessage(replyMsg.getReply()); groupMsgService.sendGroupMsg(groupMsg); - + return null; } + private void handReplyMsg(ReceiveMsg receiveMsg) { List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().equals(m.getQuestion())) { - GroupMsg groupMsg = new GroupMsg(); - groupMsg.setMessage(m.getAnswer()); - groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); - groupMsgService.sendGroupMsg(groupMsg); - System.err.println(groupMsg.toString()); - break; + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setMessage(m.getAnswer()); + groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + groupMsgService.sendGroupMsg(groupMsg); + System.err.println(groupMsg.toString()); + break; } if(!m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { GroupMsg groupMsg = new GroupMsg(); @@ -375,13 +538,13 @@ private void handReplyMsg(ReceiveMsg receiveMsg) { groupMsgService.sendGroupMsg(groupMsg); System.err.println(groupMsg.toString()); break; - + } } } - + private ReplyMsg handlePrivateMsg(ReceiveMsg receiveMsg) { - + if(receiveMsg.getRaw_message().length()>=2&&receiveMsg.getRaw_message().substring(0,2).contains(MsbotConst.botName)) { return handleNameMsg(receiveMsg); } @@ -389,7 +552,6 @@ private ReplyMsg handlePrivateMsg(ReceiveMsg receiveMsg) { return replyMsg; } - private ReplyMsg handRecognize3(ReceiveMsg receiveMsg) { //识图 String[] result = mvpImageService.handHigherImageMsg(receiveMsg); @@ -411,7 +573,7 @@ private ReplyMsg handRecognize3(ReceiveMsg receiveMsg) { replyMsg.setReply(raw_message); return replyMsg; } - + private ReplyMsg handRecognize2(ReceiveMsg receiveMsg) { //识图 String[] result = mvpImageService.handHigherImageMsg(receiveMsg); @@ -433,8 +595,7 @@ private ReplyMsg handRecognize2(ReceiveMsg receiveMsg) { replyMsg.setReply(raw_message); return replyMsg; } - - + private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { // receiveMsg.getRaw_message().contains("[CQ:image,file=") HashMap map = ReRead.getMap(); @@ -442,7 +603,7 @@ private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { map = new HashMap(); } ReReadMsg reReadMsg = map.get(receiveMsg.getGroup_id()); - + boolean isBreakReread = false; //图片信息判定是否相同 if(reReadMsg!=null) { @@ -453,14 +614,14 @@ private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { }else { isBreakReread = !reReadMsg.getRaw_message().equals(receiveMsg.getRaw_message()); } - + if(!isBreakReread) { if(reReadMsg.getReread_id().equals(receiveMsg.getUser_id())) { return null; } } } - + if(reReadMsg==null || isBreakReread) { //第一次打开 if(reReadMsg==null) { @@ -526,12 +687,12 @@ private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { }else { rereadTimeRepository.modifyReread(rereadTime.getId(),rereadTime.getCount()+1); } - + } if(reReadMsg.getMes_count()>300&&reReadMsg.getCount()==1) { reReadMsg.setMes_count(1); - + Random r = new Random(); //随机回复auto List msgList = msgRepository.findMsgByExtQuestion("随机回复auto"); @@ -557,15 +718,14 @@ private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { rm.setAuto_escape(false); rm.setReply(msg.getAnswer()); return rm; - + } reReadMsg.setMes_count(reReadMsg.getMes_count()+1); map.put(receiveMsg.getGroup_id(), reReadMsg); return null; } - - + private ReplyMsg handTransMsg(ReceiveMsg receiveMsg) { String transResult; ReplyMsg replyMsg = new ReplyMsg(); @@ -579,12 +739,11 @@ private ReplyMsg handTransMsg(ReceiveMsg receiveMsg) { // transResult = Sensitive.replaceSensitiveWords(transResult); replyMsg.setReply(transResult); return replyMsg; - + } catch (IOException e) { } return null; } - private ReplyMsg handRecognize(ReceiveMsg receiveMsg) { //识图 @@ -639,7 +798,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { int questionIndex = raw_message.indexOf("问"); int answerIndex = raw_message.indexOf(" 答"); String theQuestion = raw_message.substring(questionIndex+1, answerIndex); - + String answer = raw_message; while(answer.contains("[CQ:image")) { String imageName = mvpImageService.saveImage(answer); @@ -658,14 +817,14 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }catch (Exception e) { replyMsg.setReply("出现了一个意料之外的错误"); } - + }else { replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); } return replyMsg; } - + //正则学习 if(raw_message.contains("学习")&&raw_message.contains("正则问")&&raw_message.contains("答")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { @@ -677,7 +836,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("你的权限不足,添加固定回复词条所需权限22,你当前权限21"); return replyMsg; } - + String[] qList = theQuestion.split("\\|"); String answer = raw_message; while(answer.contains("[CQ:image")) { @@ -688,7 +847,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { answer = answer.replace(imageCq, ""); } String ans = raw_message.substring(answerIndex+2); - + for(String a : qList) { Msg newMsg = new Msg(); newMsg.setQuestion(a); @@ -706,14 +865,14 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }catch (Exception e) { replyMsg.setReply("出现了一个意料之外的错误"); } - + }else { replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); } return replyMsg; } - + //学习 if(raw_message.contains("学习")&&raw_message.contains("问")&&raw_message.contains("答")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { @@ -752,7 +911,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }catch (Exception e) { replyMsg.setReply("出现了一个意料之外的错误"); } - + }else { replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); } @@ -763,7 +922,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { //查询 Set set = msgRepository.findAllQuestion(); Iterator it = set.iterator(); - + if((raw_message.startsWith(MsbotConst.botName+"查询")||raw_message.startsWith(MsbotConst.botName+" 查询"))&&(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id()))) { try { int index = raw_message.indexOf("查询"); @@ -775,7 +934,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("查询结果为空"); return replyMsg; } - + while(it2.hasNext()) { oldMsg = it2.next(); if(oldMsg.getAnswer().contains("[CQ:record")) { @@ -796,7 +955,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } return replyMsg; } - + //删除 if(raw_message.startsWith(MsbotConst.botName+"删除问题")||raw_message.startsWith(MsbotConst.botName+" 删除问题")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { @@ -818,13 +977,13 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }catch (Exception e) { replyMsg.setReply("出现异常"); } - + }else { replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); } return replyMsg; } - + //伤害信息 if(raw_message.contains("伤害")&&(raw_message.contains("boss")||raw_message.contains("BOSS"))) { String[] split = raw_message.split(" "); @@ -870,10 +1029,10 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("出现了一个意料之外的错误"); return replyMsg; } - + } - - + + //怪物查询 if(raw_message.startsWith(MsbotConst.botName+"怪物")||raw_message.startsWith(MsbotConst.botName+" 怪物")) { if(raw_message.equals(MsbotConst.botName+"怪物")||raw_message.equals(MsbotConst.botName+" 怪物")) { @@ -905,11 +1064,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } wzXmlService.searchMob(raw_message,receiveMsg.getGroup_id(),receiveMsg.getUser_id()); return null; - + }else { - + } - + } } //测试字体 @@ -924,8 +1083,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } } - - + + //无视计算 if(raw_message.contains("无视")&&(raw_message.contains("+")||raw_message.contains("-"))) { try { @@ -935,13 +1094,13 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { raw_message = raw_message.replace(" ", ""); raw_message = raw_message.replace("=", ""); raw_message = raw_message.replace("无视", ""); - double ign = 0; + double ign = 0; double ign_before = 0; double ign2 = 0; double ign_before2 = 0; //短消息回复 // String shortMsg = ""; - + if(raw_message.contains("+")&&!raw_message.contains("-")) { String[] getInt = raw_message.split("\\+"); for(int i=0;i list = rereadTimeRepository.find3thByGroup(receiveMsg.getGroup_id()); if(list!=null) { - message += "——————————————————\r\n" + - "本周最佳复读机的称号授予" + map.get(list.get(0).getUser_id()) + "!\r\n" + - "他在过去的一周里疯狂复读" + list.get(0).getCount() + "次!简直太丧病了。\r\n" + - "——————————————————\r\n" + + message += "——————————————————\r\n" + + "本周最佳复读机的称号授予" + map.get(list.get(0).getUser_id()) + "!\r\n" + + "他在过去的一周里疯狂复读" + list.get(0).getCount() + "次!简直太丧病了。\r\n" + + "——————————————————\r\n" + "此外,以下两名成员获得了亚军和季军,也是非常优秀的复读机:\r\n"; if(list.size()>1) { message += map.get(list.get(1).getUser_id()) + " 复读次数:"+list.get(1).getCount() + "\r\n"; @@ -1110,15 +1269,15 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setAt_sender(false); return replyMsg; } - - + + //测试接口 if(raw_message.startsWith(MsbotConst.botName+"跟我读")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { replyMsg.setAt_sender(false); replyMsg.setReply(raw_message.substring(5)); return replyMsg; } - + //扔xxx if(raw_message.startsWith(MsbotConst.botName+"扔")&&raw_message.contains("[CQ:at")) { try { @@ -1147,7 +1306,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { e.printStackTrace(); } } - + try { //逆推星星[等级][主属][火花主属][总攻击][火花攻击][当前星星] /** @@ -1158,9 +1317,9 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { 总攻击: 火花攻击: 当前星星: - + 蠢猫 150级16星 - + 蠢猫 160级13星428攻 } */ @@ -1175,7 +1334,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // int fireAtt = Integer.parseInt(split[5].substring(5)); int fireAtt = 0; int nowStar = Integer.parseInt(raw_message.substring(raw_message.indexOf("级")+1,raw_message.indexOf("星"))); - + if(level!=130&&level!=140&&level!=150&&level!=160&&level!=200) { replyMsg.setReply("只能计算等级为130,140,150,160,200的装备"); return replyMsg; @@ -1188,7 +1347,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("数据不能为负"); return replyMsg; } - + int[] starForce = starForceDesc(level,stat-fireStat,att-fireAtt,nowStar); // int finalStat = starForce[0]+fireStat; int finalAtt = starForce[1]+fireAtt; @@ -1202,12 +1361,12 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } - + //正推星星 if(raw_message.contains("级")&&raw_message.contains("星")) { raw_message = raw_message.replaceAll(" ", "").substring(2); //level 130 140 150 160 200 - //蠢猫武器160 + //蠢猫武器160 //星星武器[等级][主属][火花主属][总攻击][火花攻击][当前星星][目标星星] /** 正推星星 @@ -1219,7 +1378,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { 火花攻击: 当前星星: 目标星星: - + 蠢猫 150级16星 */ boolean isWeapon = false; @@ -1266,13 +1425,13 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } catch (Exception e) { - replyMsg.setReply("输入数据异常\r\n防具正推:蠢猫[等级][星星]\r\n" + - "eg:蠢猫150级17星\r\n" + - "武器逆推:蠢猫[等级][星星][攻击]\r\n" + + replyMsg.setReply("输入数据异常\r\n防具正推:蠢猫[等级][星星]\r\n" + + "eg:蠢猫150级17星\r\n" + + "武器逆推:蠢猫[等级][星星][攻击]\r\n" + "eg:蠢猫160级13星428攻"); return replyMsg; } - + //打xxx if((raw_message.startsWith(MsbotConst.botName+"揍")||raw_message.startsWith(MsbotConst.botName+"打"))&&raw_message.contains("[CQ:at")) { try { @@ -1580,7 +1739,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } - + //官网 if(raw_message.startsWith(MsbotConst.botName+"官网")||raw_message.startsWith(MsbotConst.botName+" 官网")) { raw_message = raw_message.replaceAll("官网", ""); @@ -1590,19 +1749,19 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("输入【官网+项目】,查询游戏官网最新资讯。常见项目有:周日冒险岛、维护、敲敲乐、礼品袋"); return replyMsg; } - -/** + +/** * 这一段代码本来是因为最近周日冒险岛没加索引 所以添加一个新从首页查询 再搜索查询 * 但是我写完之后发现周日冒险岛从首页挤出去了 现在首页也找不到 * 所以先放在这 */ - + // //官网首页找 // try { // String url = "http://mxd.web.sdo.com/web6/home/index.asp"; // Document doc = Jsoup.connect(url).get(); // Elements eleList = doc.select("div.news-list"); -// +// // for(Element element : eleList) { // Elements elementsByTag2 = element.getElementsByTag("li"); // for(Element tempElement : elementsByTag2) { @@ -1616,7 +1775,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // } // url = "http://mxd.sdo.com/web6" + element.getElementsByAttribute("href").first().attr("href").replaceAll("&", "&").substring(2); // Document doc2 = Jsoup.connect(url).get(); -// +// // Element ele1 = doc2.getElementsByClass("innerTitle").first(); // Element ele2 = doc2.getElementsByClass("innerText").first(); // String message = ""; @@ -1629,14 +1788,14 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // }else { // message = message + ele2.text(); // } -// +// // if(ele2.getElementsByTag("img").toString().length()>0) { // Elements elementsByTag = ele2.getElementsByTag("img"); // for(Element temp : elementsByTag) { // String imageUrl = mvpImageService.saveTempImage(temp.attr("src")); // message = message + "[CQ:image,file="+imageUrl+"]"; // } -// +// // } // System.out.println(message); // replyMsg.setReply(message); @@ -1649,14 +1808,14 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // } //搜索页面找 String url = "http://mxd.sdo.com/web6/news/newsList.asp?wd=" + raw_message +"&CategoryID=a"; - + try { Document doc = Jsoup.connect(url).get(); Element element = doc.select(".newList").first(); element.getElementsByAttribute("href").first(); url = "http://mxd.sdo.com/web6" + element.getElementsByAttribute("href").first().attr("href").replaceAll("&", "&").substring(2); Document doc2 = Jsoup.connect(url).get(); - + Element ele1 = doc2.getElementsByClass("innerTitle").first(); Element ele2 = doc2.getElementsByClass("innerText").first(); String message = ""; @@ -1758,7 +1917,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(reply); return replyMsg; } - + if(raw_message.contains("世界组队")) { String[] list = {"月妙","废都","艾琳森林","女神塔","沙漠","木之公园"}; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -1833,7 +1992,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("(ノ゚▽゚)ノ我在哦~"); return replyMsg; } - + if(raw_message.replaceAll(MsbotConst.botName, "").replaceAll(" ","").equals("")) { raw_message = raw_message.replaceAll(" ",""); raw_message = raw_message.replaceFirst(MsbotConst.botName, ""); @@ -1866,11 +2025,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(MsbotConst.botName.substring(0,1)+"nm"); return replyMsg; } - + if(raw_message.replaceAll(MsbotConst.botName, "").replaceAll(" ","").replaceAll("?","").equals("")) { raw_message = MsbotConst.botName+"固定回复问号"; } - + //占卜 if(raw_message.startsWith(MsbotConst.botName+"占卜")||raw_message.startsWith(MsbotConst.botName+" 占卜")) { GroupMsg groupMsg = new GroupMsg(); @@ -1884,15 +2043,15 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } catch (Exception e) { e.printStackTrace(); } - + return null; - + // String reply = new String(); // reply = msgZbCalculate.msgZb(receiveMsg.getUser_id()); // replyMsg.setReply(reply); // return replyMsg; } - + try { if(raw_message.contains("^")) { replyMsg.setReply(MsbotConst.botName+"不支持平方计算"); @@ -1918,9 +2077,9 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } }catch (Exception e) { - + } - + //查找答案 List list = new ArrayList(); List rep = new ArrayList(); @@ -1977,12 +2136,12 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } - + if(MsbotConst.moliKey2!=null&&MsbotConst.moliSecret2!=null&&!MsbotConst.moliKey2.isEmpty()&&!MsbotConst.moliSecret2.isEmpty()) { if(!raw_message.contains("[CQ")) { String tuLingMsg = groupMsgService.MoliMsg2(command, Math.abs(receiveMsg.getUser_id().hashCode())+"", receiveMsg.getSender().getNickname()); @SuppressWarnings("unchecked") - Map result = (Map) JSON.parse(tuLingMsg); + Map result = (Map) JSON.parse(tuLingMsg); System.out.println(tuLingMsg); if((result.get("message")+"").contains("请求成功")) { String reply = tuLingMsg.substring(tuLingMsg.indexOf("content")+10,tuLingMsg.indexOf("\",\"typed\":")); @@ -1991,9 +2150,9 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } } - - - + + + // if(!raw_message.contains("[CQ")) { // //图灵机器人 // HashMap map = new HashMap<>(); @@ -2017,11 +2176,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // System.out.println(tuLingMsg); // //图灵消息返回 读取消息 // @SuppressWarnings("unchecked") -// Map result = (Map) JSON.parse(tuLingMsg); -// +// Map result = (Map) JSON.parse(tuLingMsg); +// // @SuppressWarnings("unchecked") -// Map intent = (Map) result.get("intent"); -// Integer code = (Integer) intent.get("code"); +// Map intent = (Map) result.get("intent"); +// Integer code = (Integer) intent.get("code"); // if(code>9000||code<3000) { // @SuppressWarnings("unchecked") // List> results = (List>) result.get("results"); @@ -2036,10 +2195,10 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { // return replyMsg; // } // } -// - - - +// + + + Random r = new Random(); int random = r.nextInt(6) + 1; if(random==1) { @@ -2063,129 +2222,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } return replyMsg; } - - public static int[] starForceDesc(int level,int stat,int att,int star) { - Map> starForceDataAfter16 = starForceDataAfter16(); - Map map = starForceDataAfter16.get(level); - while(star>0) { - stat = starForceStatDesc(star, stat, map.get("stat")); - att = starForceAttDesc(star,att,map.get("attWeapon")); - star--; - } - return new int[]{stat,att}; - } - - public static int[] starForce(int level,int stat,int att,int nowStar,int targetStar,Boolean isWeapon) { - Map> starForceDataAfter16 = starForceDataAfter16(); - Map map = starForceDataAfter16.get(level); - if(isWeapon) { - while(nowStar=15) { - totalAtt = totalAtt + att16[star-15]; - } - return totalAtt; - } - - private static int starForceAtt(int star,int totalAtt,int[] att16) { - if(star<15) { - totalAtt = totalAtt + totalAtt/50 + 1; - }else { - totalAtt = totalAtt + att16[star-15]; - } - return totalAtt; - } - - private static int starForceAttDesc(int star,int totalAtt,int[] att16) { - int before = totalAtt; - if(star<=15) { - if(totalAtt%50> starForceDataAfter16() { - Map> map = new HashMap<>(); - - Map map130 = new HashMap<>(); - map130.put("stat", new int[] {7,7,7,7,7}); - map130.put("att", new int[] {7,8,9,10,11}); - map130.put("attWeapon", new int[] {6,7,7,8,9}); - map.put(130, map130); - - Map map140 = new HashMap<>(); - map140.put("stat", new int[] {9,9,9,9,9,9,9,0,0,0}); - map140.put("att", new int[] {8,9,10,11,12,13,15,17,19,21}); - map140.put("attWeapon", new int[] {7,8,8,9,10,11,12,30,31,32}); - map.put(140, map140); - - Map map150 = new HashMap<>(); - map150.put("stat", new int[] {11,11,11,11,11,11,11,0,0,0}); - map150.put("att", new int[] {9,10,11,12,13,14,16,18,20,22}); - map150.put("attWeapon", new int[] {8,9,9,10,11,12,13,31,32,33}); - map.put(150, map150); - - Map map160 = new HashMap<>(); - map160.put("stat", new int[] {13,13,13,13,13,13,13,0,0,0}); - map160.put("att", new int[] {10,11,12,13,14,15,17,19,21,23}); - map160.put("attWeapon", new int[] {9,9,10,11,12,13,14,32,33,34}); - map.put(160, map160); - - Map map200 = new HashMap<>(); - map200.put("stat", new int[] {15,15,15,15,15,15,15,0,0,0}); - map200.put("att", new int[] {12,13,14,15,16,17,19,21,23,25}); - map200.put("attWeapon", new int[] {13,13,14,14,15,16,17,34,35,36}); - map.put(200, map200); - - return map; - } - - - + private boolean isAdminMsg(String user_id) { for(String temp : MsbotConst.managerId) { if(temp.equals(user_id)) { @@ -2195,7 +2232,6 @@ private boolean isAdminMsg(String user_id) { return false; } - //someone leave private ReplyMsg handLeave(NoticeMsg noticeMsg) { if(!noticeMsg.getSub_type().equals("leave")) { @@ -2209,14 +2245,14 @@ private ReplyMsg handLeave(NoticeMsg noticeMsg) { groupMsgService.sendGroupMsg(groupMsg); return null; } - + //欢迎新成员 private ReplyMsg handWelcome(NoticeMsg noticeMsg) { // 群发消息 if(!noticeMsg.getSub_type().equals("approve")) { return null; } - + // GroupMsg groupMsg = new GroupMsg(); // String message = ""; //添加新成员 @@ -2225,7 +2261,7 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { List msgList = msgRepository.findMsgByExtQuestion("固定回复welcome"); int random = r.nextInt(msgList.size()); Msg msg = msgList.get(random); - + GroupMsg gm = new GroupMsg(); gm.setMessage(msg.getAnswer()); gm.setGroup_id(Long.parseLong(noticeMsg.getGroup_id())); @@ -2233,37 +2269,4 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { return null; } - private static double defAndign(double def, double ign) { - double i = Double.parseDouble(String.format("%.2f", 100-(def-ign*def/100))); - if(i<0) { - i=0; - } - if(i>100) { - i=100; - } - return i; - } - public static int getResult(String A, String B) { - if(A.equals(B)) { - return 0; - } - //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 - int[][] dp = new int[A.length() + 1][B.length() + 1]; - for(int i = 1;i <= A.length();i++) - dp[i][0] = i; - for(int j = 1;j <= B.length();j++) - dp[0][j] = j; - for(int i = 1;i <= A.length();i++) { - for(int j = 1;j <= B.length();j++) { - if(A.charAt(i - 1) == B.charAt(j - 1)) - dp[i][j] = dp[i - 1][j - 1]; - else { - dp[i][j] = Math.min(dp[i - 1][j] + 1, - Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); - } - } - } - return dp[A.length()][B.length()]; - } - } From 13553a7eb28a9b3c86af80438c06e98e2385e04b Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 29 Jul 2022 17:17:40 +0800 Subject: [PATCH 21/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=A3=E9=99=A4?= =?UTF-8?q?=E7=A6=81=E8=A8=80=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index eeb71eb..0b1a72e 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1985,6 +1985,42 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } + //解除禁言 + if(raw_message.startsWith(MsbotConst.botName+"解除禁言")&&raw_message.contains("[CQ:at")) { + if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + try { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { + replyMsg.setReply("防御"); + } + else { + String imageName = "[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"; + replyMsg.setAt_sender(false); + String url = "http://127.0.0.1:5700/set_group_ban"; + JSONObject postData = new JSONObject(); + postData.put("group_id",receiveMsg.getGroup_id()); + postData.put("user_id",findNumber); + postData.put("duration",0); + RestTemplate client = new RestTemplate(); + JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); + System.out.println(json); + //replyMsg.setBan(true); + replyMsg.setReply("[CQ:at,qq=" + findNumber + "]"+"要乖噢~"); + } + } + catch (Exception e) { + replyMsg.setReply("出现异常"); + } + } + else { + replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); + } + + return replyMsg; + } + if(raw_message.replace(" ", "").equals(MsbotConst.botName)) { replyMsg.setAuto_escape(false); From 6068fa2d2c64838d66bdd47d4ee10105b8ddcd40 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 2 Aug 2022 15:13:51 +0800 Subject: [PATCH 22/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A6=81=E8=A8=80bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 0b1a72e..47fb8b8 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -352,7 +352,10 @@ else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message( for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { System.out.println(m.getAnswer()); - if (m.getAnswer().equals("禁言")){ + if (m.getQuestion().contains("md") && receiveMsg.getRaw_message().contains("md5")){ + break; + } + else if (m.getAnswer().equals("禁言")){ ReplyMsg replyMsg = new ReplyMsg(); replyMsg.setAt_sender(true); replyMsg.setAuto_escape(false); From e03b306b37fa6df3a5d04e42d1ce32eca9879e95 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Thu, 11 Aug 2022 08:48:17 +0800 Subject: [PATCH 23/66] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 47fb8b8..f0aebdc 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -301,6 +301,25 @@ public ReplyMsg receive(String msg) { } } + //禁言信息 + List result = msgNoPrefixRepository.findMsgNPList(); + for(MsgNoPrefix m : result) { + if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { + System.out.println(m.getAnswer()); + if (m.getQuestion().contains("md") && receiveMsg.getRaw_message().contains("md5")){ + break; + } + else if (m.getAnswer().equals("禁言")){ + ReplyMsg replyMsg = new ReplyMsg(); + replyMsg.setAt_sender(true); + replyMsg.setAuto_escape(false); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + System.out.println(replyMsg); + return replyMsg; + } + } + } if (receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { System.out.println(receiveMsg.toString()); @@ -347,29 +366,9 @@ else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message( // handMemberSellAndBuy(receiveMsg); // } - //禁言信息 - List result = msgNoPrefixRepository.findMsgNPList(); - for(MsgNoPrefix m : result) { - if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { - System.out.println(m.getAnswer()); - if (m.getQuestion().contains("md") && receiveMsg.getRaw_message().contains("md5")){ - break; - } - else if (m.getAnswer().equals("禁言")){ - ReplyMsg replyMsg = new ReplyMsg(); - replyMsg.setAt_sender(true); - replyMsg.setAuto_escape(false); - replyMsg.setBan(true); - replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); - System.out.println(replyMsg); - return replyMsg; - } - else{ - handReplyMsg(receiveMsg); - } - } - } - //re-read + handReplyMsg(receiveMsg); + + //re-read receiveMsg.setRaw_message(receiveMsg.getMessage()); return handRereadMsg(receiveMsg); From 8f158500a5ac59c9f83cc84afb4b7226ae92d544 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 14 Oct 2022 12:54:44 +0800 Subject: [PATCH 24/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0roll=E7=82=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index f0aebdc..9372845 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -793,6 +793,65 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return null; } + //识图 + if(raw_message.contains(MsbotConst.botName+"识图")) { + //识图 + String[] result = mvpImageService.handImageMsg(receiveMsg); + raw_message = ""; + + //接受数据 + try { + @SuppressWarnings("unchecked") + Map backMessage = (Map) JSONObject.parse(result[0]); + @SuppressWarnings("unchecked") + List> list = (List>) backMessage.get("words_result"); + for(Map a : list) { + raw_message = raw_message + a.get("words")+"\r\n"; + } + } catch (Exception e) { + e.printStackTrace(); + return null; + } + replyMsg.setReply(raw_message); + return replyMsg; + } + + //高精度识图 + if(raw_message.contains(MsbotConst.botName+"高精度识图")){ + //识图 + String[] result = mvpImageService.handHigherImageMsg(receiveMsg); + //接受数据 + raw_message = "高精度识图结果:\r\n"; + try { + @SuppressWarnings("unchecked") + Map backMessage = (Map) JSONObject.parse(result[0]); + @SuppressWarnings("unchecked") + List> list = (List>) backMessage.get("words_result"); + for(Map a : list) { + raw_message = raw_message + a.get("words")+"\r\n"; + } + } catch (Exception e) { + e.printStackTrace(); + return null; + } + replyMsg.setReply(raw_message); + return replyMsg; + } + + //roll点 + if(raw_message.contains(MsbotConst.botName+"roll")){ + try { + Random r = new Random(); + int roll = r.nextInt(100)+1; + replyMsg.setReply("点数为:"+roll); + return replyMsg; + } catch (Exception e) { + replyMsg.setReply("出现了一个意料之外的错误"); + e.printStackTrace(); + return replyMsg; + } + } + //布尔学习 if(raw_message.contains("学习")&&raw_message.contains("布尔问")&&raw_message.contains("答")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)) { From d38bfa11712b703ac75101983ca6573d1174d8f3 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Thu, 5 Jan 2023 15:37:20 +0800 Subject: [PATCH 25/66] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E6=8A=BD=E5=8D=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 8 +++---- target/classes/application.properties | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 target/classes/application.properties diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 9372845..5baaedb 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -851,7 +851,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } } - + //布尔学习 if(raw_message.contains("学习")&&raw_message.contains("布尔问")&&raw_message.contains("答")) { if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)) { @@ -1527,8 +1527,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { e.printStackTrace(); } } - /** - if(raw_message.contains("抽卡")) { + + if(raw_message.contains("抽蠢猫")) { String mes; try { mes = drawService.kemomimiDraw(); @@ -1538,7 +1538,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } replyMsg.setReply(mes); return replyMsg; - }**/ + } if(raw_message.startsWith(MsbotConst.botName+"结账")){ if (raw_message.contains("[CQ:at")){ diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 0000000..7b7be6c --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,22 @@ +spring.h2.console.enabled=true + +spring.thymeleaf.encoding=UTF-8 + +spring.thymeleaf.cache=false + +spring.thymeleaf.mode=HTML5 + +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/msbot?serverTimezone=GMT%2B8&characterEncoding=utf-8 +spring.datasource.username=root +spring.datasource.password=a12345678 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +server.port=8081 + +spring.jpa.hibernate.ddl-auto=update + +spring.jpa.open-in-view=true + +spring.servlet.multipart.max-file-size=20MB +spring.servlet.multipart.max-request-size=1024MB + From 22549f64c31cf38ad2c0debf45fb56e6bcff3e67 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 16 Jan 2023 09:41:15 +0800 Subject: [PATCH 26/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1:=E8=B7=91=E6=97=97=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 20 ++++++++++++++++++- .../msbot/serviceImpl/MsgServiceImpl.java | 3 +++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 054d1a4..34c2feb 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -137,8 +137,26 @@ private void rereadReport() { rereadTimeRepository.deleteAll(); } + @Scheduled(cron="0 0 20,21,22 ? * SUN") + private void paoqiReport(){ + List groupList = monvTimeRepository.findEveryGroup(); + if(groupList!=null) { + try { + for(String group_id:groupList) { + String message = "[CQ:at,qq=all] 周日啦,跑旗水路抓紧啦"; + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setAuto_escape(false); + groupMsg.setMessage(message); + groupMsg.setGroup_id(Long.parseLong((group_id))); + groupMsgService.sendGroupMsg(groupMsg); + } + }catch (Exception e) { + e.printStackTrace(); + } + }else {} + } - @Scheduled(cron="0 0 12 * * ?") + @Scheduled(cron="0 0 12 * * ?") private void monvReport(){ List groupList = monvTimeRepository.findEveryGroup(); if(groupList!=null) { diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 5baaedb..cd1d5fa 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1275,6 +1275,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } + //复读机周报 if(raw_message.contains("复读机周报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); @@ -1339,6 +1340,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } + + //扔xxx if(raw_message.startsWith(MsbotConst.botName+"扔")&&raw_message.contains("[CQ:at")) { try { From 835c448dc3b1b080b54944fbe809d57329755809 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 6 Mar 2023 10:51:57 +0800 Subject: [PATCH 27/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=8A=E8=89=B2?= =?UTF-8?q?=E5=92=8C=E7=94=BB=E5=A4=B4=E5=83=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/service/MvpImageService.java | 7 + .../msbot/serviceImpl/BaikeServiceImpl.java | 3 +- .../msbot/serviceImpl/DrawServiceImpl.java | 55 +++---- .../msbot/serviceImpl/MsgServiceImpl.java | 98 ++++++------ .../serviceImpl/MvpImageServiceImpl.java | 149 +++++++++++++++--- 5 files changed, 210 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/badeling/msbot/service/MvpImageService.java b/src/main/java/com/badeling/msbot/service/MvpImageService.java index 23d8d7c..d15df91 100644 --- a/src/main/java/com/badeling/msbot/service/MvpImageService.java +++ b/src/main/java/com/badeling/msbot/service/MvpImageService.java @@ -4,6 +4,8 @@ import com.badeling.msbot.domain.ReceiveMsg; +import java.io.IOException; + @Service public interface MvpImageService { @@ -17,4 +19,9 @@ public interface MvpImageService { String saveFlagRaceImage(String today, String time); String[] handHigherImageMsg(ReceiveMsg receiveMsg); + + String handColorImageMsg(ReceiveMsg receiveMsg) throws IOException; + + String handAnimeImageMsg(ReceiveMsg receiveMsg) throws IOException; + } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BaikeServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BaikeServiceImpl.java index 15cfd0d..75721c2 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/BaikeServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/BaikeServiceImpl.java @@ -1,14 +1,13 @@ package com.badeling.msbot.serviceImpl; +import com.badeling.msbot.service.BaikeService; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.stereotype.Component; -import com.badeling.msbot.service.BaikeService; - @Component public class BaikeServiceImpl implements BaikeService{ diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 2c7b088..04e9ec5 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -1,48 +1,37 @@ package com.badeling.msbot.serviceImpl; -import java.awt.image.BufferedImage; -import java.awt.image.ColorModel; -import java.awt.image.WritableRaster; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashSet; -import java.util.List; -import java.util.Random; -import java.util.UUID; - -import javax.imageio.ImageIO; - -import com.badeling.msbot.entity.MonvTime; -import com.badeling.msbot.repository.MonvTimeRepository; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - import com.alibaba.fastjson.JSON; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.NewImageUtils; import com.badeling.msbot.domain.Photo; import com.badeling.msbot.entity.Friends; +import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.repository.FriendsRepository; +import com.badeling.msbot.repository.MonvTimeRepository; import com.badeling.msbot.service.DrawService; import com.badeling.msbot.util.Loadfont; import com.badeling.msbot.util.Loadfont2; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import javax.imageio.ImageIO; +import java.awt.*; import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.WritableRaster; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import java.util.*; @@ -836,7 +825,7 @@ public String ignImage(String ignDate) throws Exception { @Override public String startDrawMs(MonvTime monvTime) throws Exception { - int prize_1=0; + int prize_1=0; int prize_2=0; int prize_3=0; int prize_4=0; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index cd1d5fa..29bde5e 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1,63 +1,32 @@ package com.badeling.msbot.serviceImpl; -import java.io.IOException; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.TreeSet; -import java.sql.Timestamp; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; - -import com.badeling.msbot.repository.*; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.MsgZbCalculate; -import com.badeling.msbot.domain.GlobalVariable; -import com.badeling.msbot.domain.GroupMsg; -import com.badeling.msbot.domain.NoticeMsg; -import com.badeling.msbot.domain.ReRead; -import com.badeling.msbot.domain.ReReadMsg; -import com.badeling.msbot.domain.ReceiveMsg; -import com.badeling.msbot.domain.ReplyMsg; -import com.badeling.msbot.domain.Result; -import com.badeling.msbot.entity.Msg; -import com.badeling.msbot.entity.MsgNoPrefix; -import com.badeling.msbot.entity.QuizOzAnswer; -import com.badeling.msbot.entity.QuizOzQuestion; -import com.badeling.msbot.entity.RankInfo; -import com.badeling.msbot.entity.RereadSentence; -import com.badeling.msbot.entity.RereadTime; -import com.badeling.msbot.entity.RoleDmg; -import com.badeling.msbot.entity.MonvTime; -import com.badeling.msbot.service.ChannelService; -import com.badeling.msbot.service.DrawService; -import com.badeling.msbot.service.GroupMsgService; -import com.badeling.msbot.service.MsgService; -import com.badeling.msbot.service.MvpImageService; -import com.badeling.msbot.service.PrivateService; -import com.badeling.msbot.service.RankService; -import com.badeling.msbot.service.WzXmlService; +import com.badeling.msbot.domain.*; +import com.badeling.msbot.entity.*; +import com.badeling.msbot.repository.*; +import com.badeling.msbot.service.*; import com.badeling.msbot.util.Loadfont2; import com.badeling.msbot.util.TranslateUtil; import com.fasterxml.jackson.databind.ObjectMapper; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import java.io.IOException; +import java.sql.Timestamp; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.*; + @Component public class MsgServiceImpl implements MsgService{ @@ -793,6 +762,37 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return null; } + //上色 + if(raw_message.contains(MsbotConst.botName+"上色")) { + + try { + raw_message = "上色结果:\r\n"; + String result = mvpImageService.handColorImageMsg(receiveMsg); + replyMsg.setReply(raw_message+result); + + } catch (Exception e) { + e.printStackTrace(); + replyMsg.setReply("上色失败"); + } + replyMsg.setAt_sender(true); + return replyMsg; + } + + //画头像 + if(raw_message.contains(MsbotConst.botName+"画头像")) { + try { + raw_message = "绘画结果:\r\n"; + String result = mvpImageService.handAnimeImageMsg(receiveMsg); + replyMsg.setReply(raw_message+result); + + } catch (Exception e) { + e.printStackTrace(); + replyMsg.setReply("绘画失败"); + } + replyMsg.setAt_sender(true); + return replyMsg; + } + //识图 if(raw_message.contains(MsbotConst.botName+"识图")) { //识图 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java index 47028b3..aedd4a6 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java @@ -1,31 +1,26 @@ package com.badeling.msbot.serviceImpl; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; +import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.domain.ReceiveMsg; +import com.badeling.msbot.service.MvpImageService; +import com.badeling.msbot.util.Base64Util; +import com.badeling.msbot.util.FileUtil; +import com.badeling.msbot.util.HttpUtil; +import org.json.JSONObject; +import org.springframework.stereotype.Component; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; +import java.util.Base64; import java.util.List; import java.util.Map; import java.util.UUID; -import org.json.JSONObject; -import org.springframework.stereotype.Component; - -import com.badeling.msbot.config.MsbotConst; -import com.badeling.msbot.domain.ReceiveMsg; -import com.badeling.msbot.service.MvpImageService; -import com.badeling.msbot.util.Base64Util; -import com.badeling.msbot.util.FileUtil; -import com.badeling.msbot.util.HttpUtil; - @@ -284,6 +279,71 @@ public String[] handHigherImageMsg(ReceiveMsg receiveMsg) { return result; } + @Override + public String handColorImageMsg(ReceiveMsg receiveMsg) throws IOException { + String raw_message = receiveMsg.getMessage(); + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; + String imageUrl = raw_message.substring(questionIndex, answerIndex); + + try { + download(imageUrl, imageName,MsbotConst.imageUrl,imageName); + } catch (Exception e) { + return null; + } + + String back = colourize(MsbotConst.imageUrl+imageName); + + String[] result = new String [2]; + result[0] = back; + result[1] = imageName; + + //TODO Base64编码->png result[0] + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + com.alibaba.fastjson.JSONObject result_json = com.alibaba.fastjson.JSONObject.parseObject(result[0]); + byte[] bytes = Base64.getDecoder().decode(result_json.getString("image")); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + BufferedImage newBufferedImage = ImageIO.read(inputStream); + ImageIO.write(newBufferedImage,"jpg",new File(MsbotConst.imageUrl +uuid +".jpg")); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + generateWaterFile(newBufferedImage, saveFilePath); + + return "[CQ:image,file=" + uuid +".jpg]"; + } + + public String handAnimeImageMsg(ReceiveMsg receiveMsg) throws IOException { + String raw_message = receiveMsg.getMessage(); + int questionIndex = raw_message.indexOf(",url=")+5; + int answerIndex = raw_message.indexOf("]"); + String imageName = UUID.randomUUID().toString().replaceAll("-", "")+".jpg"; + String imageUrl = raw_message.substring(questionIndex, answerIndex); + + try { + download(imageUrl, imageName,MsbotConst.imageUrl,imageName); + } catch (Exception e) { + return null; + } + + String back = selfieAnime(MsbotConst.imageUrl+imageName); + + String[] result = new String [2]; + result[0] = back; + result[1] = imageName; + + //TODO Base64编码->png result[0] + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + com.alibaba.fastjson.JSONObject result_json = com.alibaba.fastjson.JSONObject.parseObject(result[0]); + byte[] bytes = Base64.getDecoder().decode(result_json.getString("image")); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + BufferedImage newBufferedImage = ImageIO.read(inputStream); + ImageIO.write(newBufferedImage,"jpg",new File(MsbotConst.imageUrl +uuid +".jpg")); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + generateWaterFile(newBufferedImage, saveFilePath); + + return "[CQ:image,file=" + uuid +".jpg]"; + } + private String generalBasic2(String imgUrl) { // 请求url String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"; @@ -307,6 +367,51 @@ private String generalBasic2(String imgUrl) { return null; } + public String colourize(String imgUrl) { + // 请求url + String url = "https://aip.baidubce.com/rest/2.0/image-process/v1/colourize"; + try { + // 本地文件路径 + String filePath = imgUrl; + byte[] imgData = FileUtil.readFileByBytes(filePath); + String imgStr = Base64Util.encode(imgData); + String imgParam = URLEncoder.encode(imgStr, "UTF-8"); + + String param = "image=" + imgParam; + + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 + String accessToken = getAuth(); + String result = HttpUtil.post(url, accessToken, param); + + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public String selfieAnime(String imgUrl) { + // 请求url + String url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"; + try { + // 本地文件路径 + String filePath = imgUrl; + byte[] imgData = FileUtil.readFileByBytes(filePath); + String imgStr = Base64Util.encode(imgData); + String imgParam = URLEncoder.encode(imgStr, "UTF-8"); + String param = "image=" + imgParam; + + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 + String accessToken = getAuth(); + String result = HttpUtil.post(url, accessToken, param); + + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + //表格识图 public static String getOrcTemplateRequest(String imgUrl) { // 请求url @@ -336,5 +441,13 @@ public static String getOrcTemplateRequest(String imgUrl) { return null; } + private static void generateWaterFile(BufferedImage buffImg, String savePath) { + int temp = savePath.lastIndexOf(".") + 1; + try { + ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); + } catch (Exception e1) { + e1.printStackTrace(); + } + } } \ No newline at end of file From 112b80c7e4f95a4889c3d21cebce2c71d8f48beb Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Mar 2023 13:02:14 +0800 Subject: [PATCH 28/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=B4=E8=AF=9D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 ++ .../badeling/msbot/service/RecordService.java | 11 ++ .../msbot/serviceImpl/MsgServiceImpl.java | 22 ++- .../serviceImpl/MvpImageServiceImpl.java | 1 + .../msbot/serviceImpl/RecordServiceImpl.java | 176 ++++++++++++++++++ 5 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/badeling/msbot/service/RecordService.java create mode 100644 src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java diff --git a/pom.xml b/pom.xml index 5d2c37f..74b2d60 100644 --- a/pom.xml +++ b/pom.xml @@ -2,10 +2,18 @@ 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.4.0 + + com.badeling msbot 0.0.1-SNAPSHOT 2014 + The Apache Software License, Version 2.0 @@ -29,5 +37,10 @@ spring-boot-starter-test test + + com.squareup.okhttp3 + okhttp + 4.9.1 + diff --git a/src/main/java/com/badeling/msbot/service/RecordService.java b/src/main/java/com/badeling/msbot/service/RecordService.java new file mode 100644 index 0000000..2782d7a --- /dev/null +++ b/src/main/java/com/badeling/msbot/service/RecordService.java @@ -0,0 +1,11 @@ +package com.badeling.msbot.service; + +import org.springframework.stereotype.Service; + +import java.io.IOException; + +@Service +public interface RecordService { + String sendRecordMsg(String receiveMsg) throws IOException; + +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 29bde5e..c6bf7ad 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -44,6 +44,9 @@ public class MsgServiceImpl implements MsgService{ private GroupMsgService groupMsgService; @Autowired private MvpImageService mvpImageService; + + @Autowired + private RecordService recordService; @Autowired private DrawService drawService; @Autowired @@ -761,10 +764,27 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } return null; } + //说 + if(raw_message.contains(MsbotConst.botName+"说")){ + raw_message = raw_message.substring(raw_message.indexOf("说")+1); + raw_message = raw_message.replaceAll("\r","."); + raw_message = raw_message.replaceAll("\n","."); + System.out.println(raw_message); + + try { + String result = recordService.sendRecordMsg(raw_message); + replyMsg.setReply(result); + + } catch (Exception e) { + e.printStackTrace(); + replyMsg.setReply("失败"); + } + replyMsg.setAt_sender(false); + return replyMsg; + } //上色 if(raw_message.contains(MsbotConst.botName+"上色")) { - try { raw_message = "上色结果:\r\n"; String result = mvpImageService.handColorImageMsg(receiveMsg); diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java index aedd4a6..eae9f8b 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java @@ -312,6 +312,7 @@ public String handColorImageMsg(ReceiveMsg receiveMsg) throws IOException { return "[CQ:image,file=" + uuid +".jpg]"; } + @Override public String handAnimeImageMsg(ReceiveMsg receiveMsg) throws IOException { String raw_message = receiveMsg.getMessage(); int questionIndex = raw_message.indexOf(",url=")+5; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java new file mode 100644 index 0000000..92e0436 --- /dev/null +++ b/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java @@ -0,0 +1,176 @@ +package com.badeling.msbot.serviceImpl; + +import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.service.RecordService; +import org.json.JSONObject; +import org.springframework.stereotype.Component; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; +import java.util.UUID; + + +@Component +public class RecordServiceImpl implements RecordService { + + // 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wav + private final int aue = 3; + + // 语速,取值0-15,默认为5中语速 + private final int spd = 5; + + private String cuid = "1234567JAVA"; + + + public static String getAuth() { + // 官网获取的 API Key 更新为你注册的 + String clientId = MsbotConst.baiduKey; + // 官网获取的 Secret Key 更新为你注册的 + String clientSecret = MsbotConst.baiduSecret; + return getAuth(clientId, clientSecret); + } + public static String getAuth(String ak, String sk) { + // 获取token地址 + String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; + String getAccessTokenUrl = authHost + // 1. grant_type为固定参数 + + "grant_type=client_credentials" + // 2. 官网获取的 API Key + + "&client_id=" + ak + // 3. 官网获取的 Secret Key + + "&client_secret=" + sk; + try { + URL realUrl = new URL(getAccessTokenUrl); + // 打开和URL之间的连接 + HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); + connection.setRequestMethod("GET"); + connection.connect(); + // 获取所有响应头字段 + Map> map = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : map.keySet()) { + String object = key + "--->" + map.get(key); + } + // 定义 BufferedReader输入流来读取URL的响应 + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String result = ""; + String line; + while ((line = in.readLine()) != null) { + result += line; + } + JSONObject jsonObject = new JSONObject(result); + String access_token = jsonObject.getString("access_token"); + return access_token; + } catch (Exception e) { + + } + return null; + } + + private String getFormat(int aue) { + String[] formats = {"mp3", "pcm", "pcm", "wav"}; + return formats[aue - 3]; + } + + public String getAudio(String word) { + // 请求url + String url = "https://tsn.baidu.com/text2audio"; + try { + String accessToken = getAuth(); + String wordParam = URLEncoder.encode(word, "UTF-8"); + String params = "tex=" + wordParam; + params += "&spd=" + spd; + params += "&per=4"; + params += "&cuid=" + cuid; + params += "&tok=" + accessToken; + params += "&lan=zh&ctp=1"; + + System.out.println("accessToken:"); + System.out.println(accessToken); + + HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); + conn.setDoInput(true); + conn.setDoOutput(true); + conn.setConnectTimeout(5000); + PrintWriter printWriter = new PrintWriter(conn.getOutputStream()); + printWriter.write(params); + printWriter.close(); + + String contentType = conn.getContentType(); + if (contentType.contains("audio/")) { + byte[] bytes = getResponseBytes(conn); + String format = getFormat(aue); + + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String mp3path = MsbotConst.voiceUrl + uuid + ".mp3"; + String mp3name = uuid + ".mp3"; + + File file = new File(mp3path); + + FileOutputStream os = new FileOutputStream(file); + os.write(bytes); + os.close(); + return "[CQ:record,file=" + mp3name +"]"; + } + else { + return null; + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public String sendRecordMsg(String receiveMsg) throws IOException { + String back = getAudio(receiveMsg); + + return back; + + } + + public static byte[] getInputStreamContent(InputStream is) throws IOException { + byte[] b = new byte[1024]; + // 定义一个输出流存储接收到的数据 + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + // 开始接收数据 + int len = 0; + while (true) { + len = is.read(b); + if (len == -1) { + // 数据读完 + break; + } + byteArrayOutputStream.write(b, 0, len); + } + return byteArrayOutputStream.toByteArray(); + } + + public static byte[] getResponseBytes(HttpURLConnection conn) throws IOException { + int responseCode = conn.getResponseCode(); + InputStream inputStream = conn.getInputStream(); + if (responseCode != 200) { + System.err.println("http 请求返回的状态码错误,期望200, 当前是 " + responseCode); + if (responseCode == 401) { + System.err.println("可能是appkey appSecret 填错"); + } + System.err.println("response headers" + conn.getHeaderFields()); + if (inputStream == null) { + inputStream = conn.getErrorStream(); + } + byte[] result = getInputStreamContent(inputStream); + System.err.println(new String(result)); + return null; + } + + byte[] result = getInputStreamContent(inputStream); + return result; + } + + + +} From 19f1a044b69e8695fd5248976cc3987bc02e1e00 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Mar 2023 13:17:21 +0800 Subject: [PATCH 29/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pom.xml b/pom.xml index 74b2d60..724d328 100644 --- a/pom.xml +++ b/pom.xml @@ -37,10 +37,5 @@ spring-boot-starter-test test - - com.squareup.okhttp3 - okhttp - 4.9.1 - From d40c5e9bbf37618f7a2962a84c2d15f06f4e98b9 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Mar 2023 13:18:23 +0800 Subject: [PATCH 30/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 724d328..139aa0a 100644 --- a/pom.xml +++ b/pom.xml @@ -2,13 +2,7 @@ 4.0.0 - - - org.springframework.boot - spring-boot-starter-parent - 2.4.0 - - + com.badeling msbot 0.0.1-SNAPSHOT From 716f2f8952f41a1607a518fc0f9adf360f396309 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Mar 2023 13:51:58 +0800 Subject: [PATCH 31/66] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++++++- .../com/badeling/msbot/config/MsbotConst.java | 20 ++++++++++--------- .../msbot/serviceImpl/RecordServiceImpl.java | 1 - 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 139aa0a..724d328 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,13 @@ 4.0.0 - + + + org.springframework.boot + spring-boot-starter-parent + 2.4.0 + + com.badeling msbot 0.0.1-SNAPSHOT diff --git a/src/main/java/com/badeling/msbot/config/MsbotConst.java b/src/main/java/com/badeling/msbot/config/MsbotConst.java index e433567..326d6cd 100644 --- a/src/main/java/com/badeling/msbot/config/MsbotConst.java +++ b/src/main/java/com/badeling/msbot/config/MsbotConst.java @@ -1,14 +1,16 @@ package com.badeling.msbot.config; public class MsbotConst { - + //go cqhttp本体 public static final String miraiUrl = "D:/go-cqhttp"; //go-cqhttp图片目录 public static final String imageUrl = miraiUrl + "/data/images/"; + //go-cqhttp音频目录 + public static final String voiceUrl = miraiUrl + "/data/voices/"; //机器人昵称 public static final String botName = "蠢猫"; - //自己的昵称 + //自己的昵称 public static final String masterName = "BadeLing"; //机器人qq号 public static final String botId = "123456"; @@ -25,17 +27,17 @@ public class MsbotConst { //第三方机器人 也就是上面登录的账号 允许发言的频道 QQ频道发一句话 然后后台查看频道id //"channel_id":"1609899" public static final String[] botChannel = {"1609899"}; - + //茉莉机器人key public static final String moliKey = ""; //茉莉机器人Secret public static final String moliSecret = ""; - + //茉莉机器人key 可以和上面填一样 一个是官方频道机器人用的 一个是上面登录的第三方机器人用的 public static final String moliKey2 = ""; //茉莉机器人Secret public static final String moliSecret2 = ""; - + //百度云识图Key 可不填 只影响 识图和起源39自动识别功能 原本的气象功能已废弃 //百度云识图 普通模式每天免费5w次 高精度模式每天免费500次 public static final String baiduKey = ""; @@ -46,7 +48,7 @@ public class MsbotConst { //百度翻译key public static final String securityKey=""; - + //腾讯云key 这个可以不填 是为官方机器人用的 这个以后有条件再教 public static final String tencentSecretId = ""; //腾讯云Secret @@ -55,10 +57,10 @@ public class MsbotConst { public static final String bucketName = "image"; //存储桶地址 public static final String bucketRegion = "ap-chengdu"; - + //QQ频道官方机器人 public static final String channelBotId = "123456"; //QQ频道官方机器人 昵称 public static final String channelBotName = "拉拉"; - -} + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java index 92e0436..d7f1f50 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java @@ -172,5 +172,4 @@ public static byte[] getResponseBytes(HttpURLConnection conn) throws IOException } - } From f48b2b9d5134357aabb0cccc0845617762528f3c Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 7 Mar 2023 16:50:57 +0800 Subject: [PATCH 32/66] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/entity/BanTime.java | 68 ++++++++ .../msbot/repository/BanTimeRepository.java | 31 ++++ .../msbot/repository/MonvTimeRepository.java | 4 +- .../msbot/serviceImpl/MsgServiceImpl.java | 163 +++++++++++++++++- 4 files changed, 260 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/entity/BanTime.java create mode 100644 src/main/java/com/badeling/msbot/repository/BanTimeRepository.java diff --git a/src/main/java/com/badeling/msbot/entity/BanTime.java b/src/main/java/com/badeling/msbot/entity/BanTime.java new file mode 100644 index 0000000..8b7c720 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/BanTime.java @@ -0,0 +1,68 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.sql.Timestamp; + +@Entity +public class BanTime { + @Id + @GeneratedValue(strategy= GenerationType.IDENTITY) + private Long id; + private String user_id; + private String name; + private String group_id; + private Timestamp updated_at; + private Integer ban_times; + private String date; + + public BanTime() { + + } + + public String toString() { + return "BanTime [id=" + id + ", user_id=" + user_id + ", name=" + name + ", group_id=" + group_id + + ", updated_at=" + updated_at + ", ban_times=" + ban_times +"]"; + } + + public Long getId() { + return id; + } + + public void setBan_times(Integer ban_times){ + this.ban_times = ban_times; + } + + public Integer getBan_times(){ + return ban_times; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Timestamp getUpdateTime() { + return updated_at; + } + public void setUpdateTime(Timestamp updated_at) { + this.updated_at = updated_at; + } + public void setDate(String date) { + this.date = date; + } + +} diff --git a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java new file mode 100644 index 0000000..f88e4a5 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java @@ -0,0 +1,31 @@ +package com.badeling.msbot.repository; + +import com.badeling.msbot.entity.BanTime; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import java.sql.Timestamp; +import java.util.List; + +public interface BanTimeRepository extends CrudRepository { + @Query(value = "select * from ban_time where user_id = ?1 and date = ?2 and group_id=?3",nativeQuery=true) + BanTime findRoleBynumber(String user_id, String date, String group_id ); + + @Query(value = "SELECT * FROM ban_time WHERE user_id =?1 AND group_id = ?2 ",nativeQuery=true) + List findBanTimesByGroup(String user_id, String group_id); + + @Modifying + @Transactional + @Query(value = "update ban_time set updated_at = ?2 where id = ?1",nativeQuery=true) + void modifyUpdateTime(Long id, Timestamp updated_at); + + @Modifying + @Transactional + @Query(value = "update ban_time set ban_times = ?2,updated_at = ?3 where id = ?1",nativeQuery=true) + void modifyUpdateBanTimes(Long id, Integer ban_times,Timestamp updated_at); + + @Query(value = "select distinct group_id FROM ban_times WHERE (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0)",nativeQuery=true) + List findEveryGroup(); +} diff --git a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java index 0f65ce4..2b1389a 100644 --- a/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java @@ -1,7 +1,5 @@ package com.badeling.msbot.repository; -import com.badeling.msbot.entity.RereadSentence; -import com.badeling.msbot.entity.RereadTime; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -20,7 +18,7 @@ public interface MonvTimeRepository extends CrudRepository{ " FROM monv_time mt1 WHERE (group_id = ?1 AND TO_DAYS(NOW()) - TO_DAYS(mt1.`date`) <=0) ORDER BY gold DESC LIMIT 0,3 ",nativeQuery=true) List find3thCostByGroup(String group_id); - @Query(value = "SELECT * FROM monv_time mt WHERE user_id =?1 AND group_id = ?2 ",nativeQuery=true) + @Query(value = "SELECT * FROM monv_time WHERE user_id =?1 AND group_id = ?2 ",nativeQuery=true) List findCostByGroup(String user_id,String group_id); @Query(value = "SELECT * FROM monv_time WHERE (group_id =?1 AND TO_DAYS(NOW()) - TO_DAYS(`date`) <=0) " + diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index c6bf7ad..fc304c1 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -67,7 +67,9 @@ public class MsgServiceImpl implements MsgService{ private MsgNoPrefixRepository msgNoPrefixRepository; @Autowired private MonvTimeRepository monvTimeRepository; - + @Autowired + private BanTimeRepository banTimeRepository; + public static int[] starForceDesc(int level,int stat,int att,int star) { Map> starForceDataAfter16 = starForceDataAfter16(); Map map = starForceDataAfter16.get(level); @@ -282,7 +284,49 @@ public ReplyMsg receive(String msg) { break; } else if (m.getAnswer().equals("禁言")){ + + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + + BanTime banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + if(banTime == null) { + //查询无角色 + banTime = new BanTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + banTime.setName(receiveMsg.getSender().getNickname()); + }else { + banTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + banTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + banTime.setGroup_id("398359236"); + }else { + banTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(0); + banTime.setUpdateTime(timestamp); + banTime.setDate(date_now); + banTime.setBan_times(0); + banTime = banTimeRepository.save(banTime); + } + + banTimeRepository.modifyUpdateBanTimes( + banTime.getId(), + banTime.getBan_times()+1, + time_now + ); + + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i = 0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } ReplyMsg replyMsg = new ReplyMsg(); + replyMsg.setBan_duration((ban_times/5+1)*30*60); replyMsg.setAt_sender(true); replyMsg.setAuto_escape(false); replyMsg.setBan(true); @@ -764,6 +808,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } return null; } + //说 if(raw_message.contains(MsbotConst.botName+"说")){ raw_message = raw_message.substring(raw_message.indexOf("说")+1); @@ -783,6 +828,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setAt_sender(false); return replyMsg; } + //上色 if(raw_message.contains(MsbotConst.botName+"上色")) { try { @@ -1361,7 +1407,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } - //扔xxx if(raw_message.startsWith(MsbotConst.botName+"扔")&&raw_message.contains("[CQ:at")) { try { @@ -1697,7 +1742,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } - if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); @@ -1824,6 +1868,119 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } + if(raw_message.startsWith(MsbotConst.botName+"禁言统计")){ + if (raw_message.contains("[CQ:at")){ + try { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + + if(receiveMsg.getUser_id().equalsIgnoreCase(MsbotConst.masterId)||isAdminMsg(receiveMsg.getUser_id())) { + Listlist = banTimeRepository.findBanTimesByGroup(findNumber,receiveMsg.getGroup_id()); + + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + String mes = "\r\n"; + if(list.size() == 0) { + mes += "未查到: "+ map.get(findNumber) +" 的禁言记录"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + else { + mes += "成员: "+map.get(list.get(0).getUser_id()) +"\r\n"; + int ban_times=0; + for (int i = 0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + mes += "禁言次数:"+ban_times+"\r\n"; + mes += "处罚时间:"+(ban_times/5+1)*30+" 分钟\r\n"; + + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + } + else { + replyMsg.setAt_sender(false); + replyMsg.setReply("[CQ:at,qq=" + receiveMsg.getUser_id() + "]" + "宁是什么东西也配命令老娘?爬爬爬!"); + } + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); + } + } + else { + try { + String findNumber = receiveMsg.getUser_id(); + List list = banTimeRepository.findBanTimesByGroup(findNumber,receiveMsg.getGroup_id()); + + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + Result groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + } + else { + //有群名片 + map.put(a, c); + } + } + + String mes = "\r\n"; + + if(list.size() == 0) { + mes += "未查到: "+ map.get(findNumber) +" 的禁言记录"; + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + else { + mes += "成员: "+map.get(list.get(0).getUser_id()) +"\r\n"; + int ban_times=0; + for (int i = 0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + mes += "禁言次数:"+ban_times+"\r\n"; + mes += "处罚时间:"+(ban_times/5+1)*30+" 分钟\r\n"; + + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + } + + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + //官网 if(raw_message.startsWith(MsbotConst.botName+"官网")||raw_message.startsWith(MsbotConst.botName+" 官网")) { raw_message = raw_message.replaceAll("官网", ""); From c6ef6b462686d6e70b87eca09468802d9fdf9c71 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 8 Mar 2023 10:54:03 +0800 Subject: [PATCH 33/66] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 - .../msbot/controller/ScheduleTask.java | 37 +++++--- .../badeling/msbot/service/BanService.java | 8 ++ .../msbot/serviceImpl/BanServiceImpl.java | 85 +++++++++++++++++++ .../msbot/serviceImpl/MsgServiceImpl.java | 57 ++++++++++++- 5 files changed, 174 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/service/BanService.java create mode 100644 src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java diff --git a/pom.xml b/pom.xml index 724d328..3e50e18 100644 --- a/pom.xml +++ b/pom.xml @@ -2,13 +2,11 @@ 4.0.0 - org.springframework.boot spring-boot-starter-parent 2.4.0 - com.badeling msbot 0.0.1-SNAPSHOT diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 34c2feb..9fb508a 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -1,26 +1,25 @@ package com.badeling.msbot.controller; -import java.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.badeling.msbot.entity.MonvTime; -import com.badeling.msbot.repository.MonvTimeRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.domain.GroupMsg; import com.badeling.msbot.domain.Result; +import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.entity.RereadSentence; import com.badeling.msbot.entity.RereadTime; +import com.badeling.msbot.repository.MonvTimeRepository; import com.badeling.msbot.repository.RereadSentenceRepository; import com.badeling.msbot.repository.RereadTimeRepository; import com.badeling.msbot.service.GroupMsgService; import com.badeling.msbot.util.CosSdk; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @EnableScheduling @Component @@ -250,6 +249,20 @@ private void monvReport(){ }else {} } + @Scheduled(cron="0 0 0 * * ?") + private void deleteRecord(){ + String url = MsbotConst.voiceUrl; + File file = new File(url); + String[] fileList = file.list(); + + for(String a : fileList) { + File file2 = new File(url,a); + if(file2.isFile()&&!file2.getName().contains(MsbotConst.channelBotId)) { + file2.delete(); + } + } + } + } diff --git a/src/main/java/com/badeling/msbot/service/BanService.java b/src/main/java/com/badeling/msbot/service/BanService.java new file mode 100644 index 0000000..c397fc7 --- /dev/null +++ b/src/main/java/com/badeling/msbot/service/BanService.java @@ -0,0 +1,8 @@ +package com.badeling.msbot.service; + +import org.springframework.stereotype.Service; + +@Service +public interface BanService { + String getCheckResult(String word); +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java new file mode 100644 index 0000000..99d261f --- /dev/null +++ b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java @@ -0,0 +1,85 @@ +package com.badeling.msbot.serviceImpl; + +import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.service.BanService; +import com.badeling.msbot.util.HttpUtil; +import org.json.JSONObject; +import org.springframework.stereotype.Component; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.List; +import java.util.Map; + +@Component +public class BanServiceImpl implements BanService { + public static String getAuth() { + // 官网获取的 API Key 更新为你注册的 + String clientId = MsbotConst.baiduKey; + // 官网获取的 Secret Key 更新为你注册的 + String clientSecret = MsbotConst.baiduSecret; + return getAuth(clientId, clientSecret); + } + public static String getAuth(String ak, String sk) { + // 获取token地址 + String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; + String getAccessTokenUrl = authHost + // 1. grant_type为固定参数 + + "grant_type=client_credentials" + // 2. 官网获取的 API Key + + "&client_id=" + ak + // 3. 官网获取的 Secret Key + + "&client_secret=" + sk; + try { + URL realUrl = new URL(getAccessTokenUrl); + // 打开和URL之间的连接 + HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); + connection.setRequestMethod("GET"); + connection.connect(); + // 获取所有响应头字段 + Map> map = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : map.keySet()) { + String object = key + "--->" + map.get(key); + } + // 定义 BufferedReader输入流来读取URL的响应 + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String result = ""; + String line; + while ((line = in.readLine()) != null) { + result += line; + } + JSONObject jsonObject = new JSONObject(result); + String access_token = jsonObject.getString("access_token"); + return access_token; + } catch (Exception e) { + + } + return null; + } + + public String getCheckResult(String word) { + String url = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined"; + try { + String param = "text=" + word; + String accessToken = getAuth(); + String result = HttpUtil.post(url, accessToken, param); + //System.out.println(result); + JSONObject result_json= new JSONObject(result); + //System.out.println(result_json.get("conclusion")); + + if(result_json.get("conclusion").equals("不合规")){ + return "禁言"; + } + else + return "不禁言"; + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index fc304c1..f468b4a 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -45,6 +45,9 @@ public class MsgServiceImpl implements MsgService{ @Autowired private MvpImageService mvpImageService; + @Autowired + private BanService banService; + @Autowired private RecordService recordService; @Autowired @@ -276,6 +279,58 @@ public ReplyMsg receive(String msg) { } //禁言信息 + String checkResult = banService.getCheckResult(receiveMsg.getRaw_message()); + if (checkResult.equals("禁言")){ + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + + BanTime banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + if(banTime == null) { + //查询无角色 + banTime = new BanTime(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + banTime.setName(receiveMsg.getSender().getNickname()); + }else { + banTime.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + banTime.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + if(receiveMsg.getGroup_id().contains("101577006")) { + banTime.setGroup_id("398359236"); + }else { + banTime.setGroup_id(receiveMsg.getGroup_id()); + } + Timestamp timestamp = new Timestamp(0); + banTime.setUpdateTime(timestamp); + banTime.setDate(date_now); + banTime.setBan_times(0); + banTime = banTimeRepository.save(banTime); + } + + banTimeRepository.modifyUpdateBanTimes( + banTime.getId(), + banTime.getBan_times()+1, + time_now + ); + + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i =0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + ReplyMsg replyMsg = new ReplyMsg(); + replyMsg.setBan_duration((ban_times/5+1)*30*60); + replyMsg.setAt_sender(true); + replyMsg.setAuto_escape(false); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + System.out.println(replyMsg); + return replyMsg; + } + /** List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { @@ -335,7 +390,7 @@ else if (m.getAnswer().equals("禁言")){ return replyMsg; } } - } + }**/ if (receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { System.out.println(receiveMsg.toString()); From 54547b8040dc7c7c0302a11a37c26e7c2be83604 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Thu, 9 Mar 2023 08:53:17 +0800 Subject: [PATCH 34/66] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/BanServiceImpl.java | 39 ++++++++++++------- .../msbot/serviceImpl/MsgServiceImpl.java | 1 + 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java index 99d261f..23ec067 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java @@ -61,25 +61,34 @@ public static String getAuth(String ak, String sk) { } public String getCheckResult(String word) { + if (word.contains("[CQ:image,file=")){ + int count = word.split("\\[CQ:image,file=", -1).length-1; + for (int i=0;i Date: Fri, 10 Mar 2023 09:52:45 +0800 Subject: [PATCH 35/66] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 5 ++ .../msbot/repository/BanTimeRepository.java | 7 +- .../msbot/serviceImpl/BanServiceImpl.java | 5 +- .../msbot/serviceImpl/MsgServiceImpl.java | 25 ++++-- .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 87 +++++++++++++++++++ 6 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 9fb508a..7b3440f 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -6,6 +6,7 @@ import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.entity.RereadSentence; import com.badeling.msbot.entity.RereadTime; +import com.badeling.msbot.repository.BanTimeRepository; import com.badeling.msbot.repository.MonvTimeRepository; import com.badeling.msbot.repository.RereadSentenceRepository; import com.badeling.msbot.repository.RereadTimeRepository; @@ -34,6 +35,9 @@ public class ScheduleTask { @Autowired private RereadTimeRepository rereadTimeRepository; + + @Autowired + private BanTimeRepository banTimeRepository; @Autowired private MonvTimeRepository monvTimeRepository; @@ -134,6 +138,7 @@ private void rereadReport() { } rereadSentenceRepository.deleteAll(); rereadTimeRepository.deleteAll(); + banTimeRepository.deleteAll(); } @Scheduled(cron="0 0 20,21,22 ? * SUN") diff --git a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java index f88e4a5..31b63f7 100644 --- a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java @@ -16,16 +16,21 @@ public interface BanTimeRepository extends CrudRepository { @Query(value = "SELECT * FROM ban_time WHERE user_id =?1 AND group_id = ?2 ",nativeQuery=true) List findBanTimesByGroup(String user_id, String group_id); + @Query(value = "SELECT * FROM ban_time WHERE user_id =?1 AND group_id = ?2 AND (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0) LIMIT 1",nativeQuery=true) + BanTime findBanTimesTodayByGroup(String user_id, String group_id); + @Modifying @Transactional @Query(value = "update ban_time set updated_at = ?2 where id = ?1",nativeQuery=true) void modifyUpdateTime(Long id, Timestamp updated_at); - @Modifying + @Modifying(clearAutomatically = true) @Transactional @Query(value = "update ban_time set ban_times = ?2,updated_at = ?3 where id = ?1",nativeQuery=true) void modifyUpdateBanTimes(Long id, Integer ban_times,Timestamp updated_at); @Query(value = "select distinct group_id FROM ban_times WHERE (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0)",nativeQuery=true) List findEveryGroup(); + + } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java index 23ec067..ead1571 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java @@ -64,7 +64,10 @@ public String getCheckResult(String word) { if (word.contains("[CQ:image,file=")){ int count = word.split("\\[CQ:image,file=", -1).length-1; for (int i=0;i list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); - int ban_times=0; - for (int i =0; i < list.size(); i++) { - ban_times += list.get(i).getBan_times(); - } + BanTime banTime1 = banTimeRepository.findBanTimesTodayByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); ReplyMsg replyMsg = new ReplyMsg(); - replyMsg.setBan_duration((ban_times/5+1)*30*60); + if (banTime1.getBan_times()==1){ + replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); + } + else { + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i =0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + replyMsg.setBan_duration((ban_times/5+1)*30*60); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + } + replyMsg.setAt_sender(true); replyMsg.setAuto_escape(false); - replyMsg.setBan(true); - replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); System.out.println(replyMsg); return replyMsg; } + /** List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..8ef94db --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,87 @@ +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/BaikeServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/TransData.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/config/WebMvcConfig.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/RoleDmg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/RankInfoRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/QuizOzQuestion.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/MvpImageService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/WzXmlServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/BanService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/MsgService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/GroupMsgServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/RecordServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/WzXmlService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/RecordService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/QuizOzAnswerRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/Photo.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/LuckyMap.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ChannelMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/controller/MsgZbCalculate.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/Base64Util.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/QuizOzQuestionRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/BaikeService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/controller/ApplicationRunnerImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/Result.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/MobInfo.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/ChannelService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/HttpUtil.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ChannelReplyMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/config/MsbotConst.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/TranslateUtil.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/PrivateService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/MsbotApplication.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/RankInfo.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ReRead.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/MD5.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/RankServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/MsgNoPrefixRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/LuckyTableRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/Friends.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/GroupMsgService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/MsgNoPrefix.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/LuckyThingRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/RereadSentenceRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/CosSdk.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/MsgRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ReReadMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/GlobalVariable.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/MonvTime.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/QuizOzAnswer.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/GroupMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/LuckyMapRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/MobNameRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/RoleDmgRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/FriendsRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/PrivateServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/MobName.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ReceiveMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/ChannelOfficialService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/LuckyTable.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/NoticeMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/Loadfont2.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/Loadfont.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/DrawService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/Msg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/PrivateMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/RereadTimeRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/Sender.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/util/FileUtil.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/BanTime.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/controller/MsbotController.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/MobInfoRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/service/RankService.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/LuckyThing.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/TransResult.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/RereadSentence.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/repository/MonvTimeRepository.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/entity/RereadTime.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/domain/ReplyMsg.java +/Users/wuyingdi/Msbot/src/main/java/com/badeling/msbot/serviceImpl/ChannelOfficialServiceImpl.java From c0fe36b8b9bd576cdc59d223256c228cb5ad74cd Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 10 Mar 2023 16:38:26 +0800 Subject: [PATCH 36/66] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index dc74914..2936ffb 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -2261,7 +2261,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; int bIndex = receiveMsg.getRaw_message().indexOf("]"); String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); - if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { + if(isAdminMsg(findNumber)|| findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { replyMsg.setReply("禁言防御"); } else { @@ -2296,7 +2296,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; int bIndex = receiveMsg.getRaw_message().indexOf("]"); String findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); - if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { + if(isAdminMsg(findNumber)|| findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { replyMsg.setReply("防御"); } else { From 2b9d0b8605f2f4d078784268b88449314a838675 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 14 Mar 2023 10:46:14 +0800 Subject: [PATCH 37/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E5=91=A8=E6=8A=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 58 ++++++++++++++++++- .../msbot/repository/BanTimeRepository.java | 5 +- .../msbot/serviceImpl/BanServiceImpl.java | 19 ++++-- .../msbot/serviceImpl/MsgServiceImpl.java | 40 +++++++++++++ 4 files changed, 113 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 7b3440f..3e12911 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -3,6 +3,7 @@ import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.domain.GroupMsg; import com.badeling.msbot.domain.Result; +import com.badeling.msbot.entity.BanTime; import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.entity.RereadSentence; import com.badeling.msbot.entity.RereadTime; @@ -40,8 +41,6 @@ public class ScheduleTask { private BanTimeRepository banTimeRepository; @Autowired private MonvTimeRepository monvTimeRepository; - - //清除图片缓存 @Scheduled(cron="0 30 4 ? * MON") private void delete() { @@ -141,6 +140,61 @@ private void rereadReport() { banTimeRepository.deleteAll(); } + @Scheduled(cron="0 0 0 ? * MON") + private void banReport() { + List groupList = banTimeRepository.findEveryGroup(); + if(groupList!=null) { + try { + for(String group_id:groupList) { + //得到群成员信息 + GroupMsg gp = new GroupMsg(); + gp.setGroup_id(Long.parseLong(group_id)); + Result groupMember = groupMsgService.getGroupMember(gp); + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + List list = banTimeRepository.findBanTimesWeeklyByGroup(group_id); + String message="本周禁言榜榜首是:\r\n"; + if(list.size()>0) { + for (int i = 0; i < list.size(); i++) { + if (i==1){ + message += "此外,以下成员也榜上有名:\r\n"; + } + message += map.get(list.get(i).getUser_id()) + " 被禁言次数: "+ list.get(i).getBan_times() +"\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + + message += "——————————————————\r\n已上群友新的一周要乖噢~!uwu"; + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setAuto_escape(false); + groupMsg.setMessage(message); + groupMsg.setGroup_id(Long.parseLong((group_id))); + groupMsgService.sendGroupMsg(groupMsg); + } + }catch (Exception e) { + e.printStackTrace(); + } + }else {} + + banTimeRepository.deleteAll(); + } + @Scheduled(cron="0 0 20,21,22 ? * SUN") private void paoqiReport(){ List groupList = monvTimeRepository.findEveryGroup(); diff --git a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java index 31b63f7..34cfdc8 100644 --- a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java @@ -29,8 +29,11 @@ public interface BanTimeRepository extends CrudRepository { @Query(value = "update ban_time set ban_times = ?2,updated_at = ?3 where id = ?1",nativeQuery=true) void modifyUpdateBanTimes(Long id, Integer ban_times,Timestamp updated_at); - @Query(value = "select distinct group_id FROM ban_times WHERE (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0)",nativeQuery=true) + @Query(value = "select distinct group_id FROM ban_times",nativeQuery=true) List findEveryGroup(); + @Query(value = "SELECT user_id ,MIN(id) AS id,MIN(`date`) AS `date`,MIN(group_id) AS group_id,MIN(updated_at) AS updated_at,MIN(name) AS name,SUM(ban_times) AS ban_times FROM ban_time bt "+ + "WHERE group_id = ?1 GROUP BY user_id ORDER BY ban_times DESC",nativeQuery=true) + List findBanTimesWeeklyByGroup(String group_id); } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java index ead1571..144ef34 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java @@ -61,16 +61,19 @@ public static String getAuth(String ak, String sk) { } public String getCheckResult(String word) { - if (word.contains("[CQ:image,file=")){ - int count = word.split("\\[CQ:image,file=", -1).length-1; + if (word.contains("[CQ:")){ + int count = word.split("\\[CQ:", -1).length-1; for (int i=0;i groupMember = groupMsgService.getGroupMember(gp); + + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + Map map = new HashMap<>(); + for(Map temp:data) { + String a = temp.get("user_id")+""; + String b = (String) temp.get("nickname"); + String c = (String) temp.get("card"); + if(c.equals("")) { + //无群名片 + map.put(a, b); + }else { + //有群名片 + map.put(a, c); + } + } + + List list = banTimeRepository.findBanTimesWeeklyByGroup(receiveMsg.getGroup_id()); + String message="本周禁言榜榜首是:\r\n"; + if(list.size()>0) { + for (int i = 0; i < list.size(); i++) { + if (i==1){ + message += "此外,以下成员也榜上有名:\r\n"; + } + message += map.get(list.get(i).getUser_id()) + " 被禁言次数: "+ list.get(i).getBan_times() +"\r\n"; + } + } + else { + message += "虚位以待\r\n"; + } + + message += "——————————————————\r\n已上群友新的一周要乖噢~!uwu"; + replyMsg.setReply(message); + return replyMsg; + } if (raw_message.contains("抽奖日报")||raw_message.contains("魔女日报")||raw_message.contains("百分百日报")) { //得到群成员信息 From c71c29ebd622ebc6985c5df00af6c7b3252b0876 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 17 Mar 2023 12:35:32 +0800 Subject: [PATCH 38/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 2 +- .../badeling/msbot/service/BanService.java | 3 ++ .../msbot/serviceImpl/BanServiceImpl.java | 35 +++++++++++++++++++ .../msbot/serviceImpl/MsgServiceImpl.java | 8 +++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 3e12911..c92f5f2 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -180,7 +180,7 @@ private void banReport() { message += "虚位以待\r\n"; } - message += "——————————————————\r\n已上群友新的一周要乖噢~!uwu"; + message += "——————————————————\r\n以上群友新的一周要乖噢~!uwu"; GroupMsg groupMsg = new GroupMsg(); groupMsg.setAuto_escape(false); groupMsg.setMessage(message); diff --git a/src/main/java/com/badeling/msbot/service/BanService.java b/src/main/java/com/badeling/msbot/service/BanService.java index c397fc7..b370d92 100644 --- a/src/main/java/com/badeling/msbot/service/BanService.java +++ b/src/main/java/com/badeling/msbot/service/BanService.java @@ -5,4 +5,7 @@ @Service public interface BanService { String getCheckResult(String word); + + String getCheckResultImage(String word); + } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java index 144ef34..9809a1d 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/BanServiceImpl.java @@ -101,4 +101,39 @@ public String getCheckResult(String word) { return "不禁言"; } + public String getCheckResultImage(String word){ + if (word.contains("[CQ:image")){ + String url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined"; + + int count = word.split("\\[CQ:image", -1).length-1; + for (int i=0;i list = banTimeRepository.findBanTimesWeeklyByGroup(receiveMsg.getGroup_id()); - String message="本周禁言榜榜首是:\r\n"; + String message="本周艹艹榜榜首是:\r\n"; if(list.size()>0) { for (int i = 0; i < list.size(); i++) { if (i==1){ @@ -1840,7 +1842,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { message += "虚位以待\r\n"; } - message += "——————————————————\r\n已上群友新的一周要乖噢~!uwu"; + message += "——————————————————\r\n以上群友新的一周要乖噢~!uwu"; replyMsg.setReply(message); return replyMsg; } From 124e2a564f9a88266bf27cf15ab4c3a4d5a04be1 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 17 Mar 2023 12:41:11 +0800 Subject: [PATCH 39/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 662e003..680d66a 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1829,7 +1829,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } List list = banTimeRepository.findBanTimesWeeklyByGroup(receiveMsg.getGroup_id()); - String message="本周艹艹榜榜首是:\r\n"; + String message="本周禁言榜榜首是:\r\n"; if(list.size()>0) { for (int i = 0; i < list.size(); i++) { if (i==1){ From 8b1ecbf0a774e04369373ed616aeab4c99cd1629 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 20 Mar 2023 07:49:11 +0800 Subject: [PATCH 40/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/badeling/msbot/controller/ScheduleTask.java | 1 - .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index c92f5f2..8dbfd5e 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -137,7 +137,6 @@ private void rereadReport() { } rereadSentenceRepository.deleteAll(); rereadTimeRepository.deleteAll(); - banTimeRepository.deleteAll(); } @Scheduled(cron="0 0 0 ? * MON") diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 680d66a..1185116 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -280,8 +280,8 @@ public ReplyMsg receive(String msg) { //禁言信息 String checkResultImage = banService.getCheckResultImage(receiveMsg.getRaw_message()); - String checkResult = banService.getCheckResult(receiveMsg.getRaw_message()); + if (checkResult.equals("禁言") || checkResultImage.equals("禁言")){ Timestamp time_now = new Timestamp(System.currentTimeMillis()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); From 494192a3d2df2190ba6b103f1ffd8f5d6cbff41a Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 27 Mar 2023 09:04:36 +0800 Subject: [PATCH 41/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badeling/msbot/controller/ScheduleTask.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 8dbfd5e..8563307 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -135,16 +135,11 @@ private void rereadReport() { }else { } - rereadSentenceRepository.deleteAll(); - rereadTimeRepository.deleteAll(); - } - @Scheduled(cron="0 0 0 ? * MON") - private void banReport() { - List groupList = banTimeRepository.findEveryGroup(); - if(groupList!=null) { + List groupList2 = banTimeRepository.findEveryGroup(); + if(groupList2!=null) { try { - for(String group_id:groupList) { + for(String group_id:groupList2) { //得到群成员信息 GroupMsg gp = new GroupMsg(); gp.setGroup_id(Long.parseLong(group_id)); @@ -192,7 +187,9 @@ private void banReport() { }else {} banTimeRepository.deleteAll(); - } + rereadSentenceRepository.deleteAll(); + rereadTimeRepository.deleteAll(); + } @Scheduled(cron="0 0 20,21,22 ? * SUN") private void paoqiReport(){ From a99ebf9e0c57d3086526c418df025b12d9f4bf49 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 3 Apr 2023 13:05:45 +0800 Subject: [PATCH 42/66] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/ScheduleTask.java | 18 ++++++++++-------- .../msbot/repository/BanTimeRepository.java | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 8563307..176f3f6 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -67,7 +67,6 @@ private void delete() { //复读机周报 @Scheduled(cron="0 0 0 ? * MON") private void rereadReport() { - List groupList = rereadSentenceRepository.findMaxEveryGroup(); if(groupList!=null) { try { @@ -133,13 +132,19 @@ private void rereadReport() { e.printStackTrace(); } }else { - + } - List groupList2 = banTimeRepository.findEveryGroup(); - if(groupList2!=null) { + rereadSentenceRepository.deleteAll(); + rereadTimeRepository.deleteAll(); + } + + @Scheduled(cron="0 0 0 ? * MON") + private void banReport(){ + List groupList = banTimeRepository.findEveryGroup(); + if(groupList!=null) { try { - for(String group_id:groupList2) { + for(String group_id:groupList) { //得到群成员信息 GroupMsg gp = new GroupMsg(); gp.setGroup_id(Long.parseLong(group_id)); @@ -187,10 +192,7 @@ private void rereadReport() { }else {} banTimeRepository.deleteAll(); - rereadSentenceRepository.deleteAll(); - rereadTimeRepository.deleteAll(); } - @Scheduled(cron="0 0 20,21,22 ? * SUN") private void paoqiReport(){ List groupList = monvTimeRepository.findEveryGroup(); diff --git a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java index 34cfdc8..44c5924 100644 --- a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java @@ -29,7 +29,7 @@ public interface BanTimeRepository extends CrudRepository { @Query(value = "update ban_time set ban_times = ?2,updated_at = ?3 where id = ?1",nativeQuery=true) void modifyUpdateBanTimes(Long id, Integer ban_times,Timestamp updated_at); - @Query(value = "select distinct group_id FROM ban_times",nativeQuery=true) + @Query(value = "select distinct group_id FROM ban_time",nativeQuery=true) List findEveryGroup(); @Query(value = "SELECT user_id ,MIN(id) AS id,MIN(`date`) AS `date`,MIN(group_id) AS group_id,MIN(updated_at) AS updated_at,MIN(name) AS name,SUM(ban_times) AS ban_times FROM ban_time bt "+ From 9f804de0171822b57b197855cb209225275a6e95 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 10 Apr 2023 15:44:08 +0800 Subject: [PATCH 43/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/controller/ScheduleTask.java | 2 +- .../com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index 176f3f6..c58b1c3 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -139,7 +139,7 @@ private void rereadReport() { rereadTimeRepository.deleteAll(); } - @Scheduled(cron="0 0 0 ? * MON") + @Scheduled(cron="1 0 0 ? * MON") private void banReport(){ List groupList = banTimeRepository.findEveryGroup(); if(groupList!=null) { diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 1185116..127263c 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -280,9 +280,9 @@ public ReplyMsg receive(String msg) { //禁言信息 String checkResultImage = banService.getCheckResultImage(receiveMsg.getRaw_message()); - String checkResult = banService.getCheckResult(receiveMsg.getRaw_message()); + //String checkResult = banService.getCheckResult(receiveMsg.getRaw_message()); - if (checkResult.equals("禁言") || checkResultImage.equals("禁言")){ + if (checkResultImage.equals("禁言")){ Timestamp time_now = new Timestamp(System.currentTimeMillis()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String date_now = df.format(time_now); @@ -340,7 +340,6 @@ public ReplyMsg receive(String msg) { return replyMsg; } - /** List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { @@ -400,7 +399,7 @@ else if (m.getAnswer().equals("禁言")){ return replyMsg; } } - }**/ + } if (receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { System.out.println(receiveMsg.toString()); From c1a654d4bb0ce5ccda2251044e7f98e853e07cef Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 12 Apr 2023 13:16:20 +0800 Subject: [PATCH 44/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 127263c..9500eb2 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -277,17 +277,33 @@ public ReplyMsg receive(String msg) { return null; } } + //处理禁言延时 + Timestamp time_now = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String date_now = df.format(time_now); + BanTime banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + + if(banTime != null) { + long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; + if (delay_time<=120){ + String url = "http://127.0.0.1:5700/delete_msg"; + JSONObject postData = new JSONObject(); + postData.put("message_id",receiveMsg.getMessage_id()); + RestTemplate client = new RestTemplate(); + JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); + System.out.println(json); + return null; + } + } //禁言信息 String checkResultImage = banService.getCheckResultImage(receiveMsg.getRaw_message()); - //String checkResult = banService.getCheckResult(receiveMsg.getRaw_message()); if (checkResultImage.equals("禁言")){ - Timestamp time_now = new Timestamp(System.currentTimeMillis()); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String date_now = df.format(time_now); - - BanTime banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + time_now = new Timestamp(System.currentTimeMillis()); + df = new SimpleDateFormat("yyyy-MM-dd"); + date_now = df.format(time_now); + banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); if(banTime == null) { //查询无角色 banTime = new BanTime(); @@ -349,11 +365,11 @@ public ReplyMsg receive(String msg) { } else if (m.getAnswer().equals("禁言")){ - Timestamp time_now = new Timestamp(System.currentTimeMillis()); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String date_now = df.format(time_now); + time_now = new Timestamp(System.currentTimeMillis()); + df = new SimpleDateFormat("yyyy-MM-dd"); + date_now = df.format(time_now); - BanTime banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); if(banTime == null) { //查询无角色 banTime = new BanTime(); @@ -2327,7 +2343,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { else { replyMsg.setReply("宁是什么东西也配命令老娘?爬爬爬!"); } - return replyMsg; } //解除禁言 From a336094a8dc0e112621a52068f75ed0f06bd38b8 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 12 Apr 2023 13:24:09 +0800 Subject: [PATCH 45/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 9500eb2..a99b597 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -285,7 +285,7 @@ public ReplyMsg receive(String msg) { if(banTime != null) { long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - if (delay_time<=120){ + if (delay_time<=120 && banTime.getBan_times() != 1 ){ String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); postData.put("message_id",receiveMsg.getMessage_id()); From f9106c934b967872d346f80614a6de2985b117e1 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 12 Apr 2023 13:27:01 +0800 Subject: [PATCH 46/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index a99b597..5351698 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -285,7 +285,7 @@ public ReplyMsg receive(String msg) { if(banTime != null) { long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - if (delay_time<=120 && banTime.getBan_times() != 1 ){ + if (delay_time<=10 && banTime.getBan_times() != 1 ){ String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); postData.put("message_id",receiveMsg.getMessage_id()); From aacc58c95561cfe45da1301ab7bfb7c896c5d14e Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 12 Apr 2023 13:35:58 +0800 Subject: [PATCH 47/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 5351698..e0c73bd 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -285,7 +285,7 @@ public ReplyMsg receive(String msg) { if(banTime != null) { long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - if (delay_time<=10 && banTime.getBan_times() != 1 ){ + if (delay_time<=5 && banTime.getBan_times() != 1 ){ String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); postData.put("message_id",receiveMsg.getMessage_id()); @@ -327,33 +327,37 @@ public ReplyMsg receive(String msg) { banTime.setBan_times(0); banTime = banTimeRepository.save(banTime); } - - banTimeRepository.modifyUpdateBanTimes( - banTime.getId(), - banTime.getBan_times()+1, - time_now - ); - - BanTime banTime1 = banTimeRepository.findBanTimesTodayByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); - ReplyMsg replyMsg = new ReplyMsg(); - if (banTime1.getBan_times()==1){ - replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); + long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; + if (delay_time<=5){ + return null; } else { - List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); - int ban_times=0; - for (int i =0; i < list.size(); i++) { - ban_times += list.get(i).getBan_times(); + banTimeRepository.modifyUpdateBanTimes( + banTime.getId(), + banTime.getBan_times()+1, + time_now + ); + + BanTime banTime1 = banTimeRepository.findBanTimesTodayByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + ReplyMsg replyMsg = new ReplyMsg(); + if (banTime1.getBan_times()==1){ + replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); + } + else { + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i =0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + replyMsg.setBan_duration((ban_times/5+1)*30*60); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); } - replyMsg.setBan_duration((ban_times/5+1)*30*60); - replyMsg.setBan(true); - replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + replyMsg.setAt_sender(true); + replyMsg.setAuto_escape(false); + System.out.println(replyMsg); + return replyMsg; } - - replyMsg.setAt_sender(true); - replyMsg.setAuto_escape(false); - System.out.println(replyMsg); - return replyMsg; } List result = msgNoPrefixRepository.findMsgNPList(); From 4b4b38ef22971c7c4fd1d26c7b50d5aeedd1e0f8 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 14 Apr 2023 15:00:51 +0800 Subject: [PATCH 48/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/MsbotController.java | 16 +++++---- .../msbot/repository/BanTimeRepository.java | 3 +- .../msbot/serviceImpl/MsgServiceImpl.java | 36 +++++++++++++------ 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/MsbotController.java b/src/main/java/com/badeling/msbot/controller/MsbotController.java index c6c370a..14462a2 100644 --- a/src/main/java/com/badeling/msbot/controller/MsbotController.java +++ b/src/main/java/com/badeling/msbot/controller/MsbotController.java @@ -1,15 +1,17 @@ package com.badeling.msbot.controller; -import java.io.IOException; -import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; + import com.alibaba.fastjson.JSON; import com.badeling.msbot.domain.ReplyMsg; import com.badeling.msbot.service.GroupMsgService; import com.badeling.msbot.service.MsgService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.stream.Collectors; @Controller @RequestMapping("/msg") diff --git a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java index 44c5924..6f45fbe 100644 --- a/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java +++ b/src/main/java/com/badeling/msbot/repository/BanTimeRepository.java @@ -10,6 +10,7 @@ import java.util.List; public interface BanTimeRepository extends CrudRepository { + @Transactional @Query(value = "select * from ban_time where user_id = ?1 and date = ?2 and group_id=?3",nativeQuery=true) BanTime findRoleBynumber(String user_id, String date, String group_id ); @@ -19,7 +20,7 @@ public interface BanTimeRepository extends CrudRepository { @Query(value = "SELECT * FROM ban_time WHERE user_id =?1 AND group_id = ?2 AND (TO_DAYS(NOW()) - TO_DAYS(`date`) <=0) LIMIT 1",nativeQuery=true) BanTime findBanTimesTodayByGroup(String user_id, String group_id); - @Modifying + @Modifying(clearAutomatically = true) @Transactional @Query(value = "update ban_time set updated_at = ?2 where id = ?1",nativeQuery=true) void modifyUpdateTime(Long id, Timestamp updated_at); diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index e0c73bd..e385a53 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -228,7 +228,7 @@ public static int getResult(String A, String B) { } @Override - public ReplyMsg receive(String msg) { + public synchronized ReplyMsg receive(String msg) { ReceiveMsg receiveMsg = null; //判定是否有重复请求 TreeSet msgList = GlobalVariable.getMsgList(); @@ -285,13 +285,13 @@ public ReplyMsg receive(String msg) { if(banTime != null) { long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - if (delay_time<=5 && banTime.getBan_times() != 1 ){ + if (delay_time <= 15 && banTime.getBan_times() != 1 ){ + System.out.println("message_id:"+receiveMsg.getMessage_id()); String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); postData.put("message_id",receiveMsg.getMessage_id()); RestTemplate client = new RestTemplate(); JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); - System.out.println(json); return null; } } @@ -300,9 +300,6 @@ public ReplyMsg receive(String msg) { String checkResultImage = banService.getCheckResultImage(receiveMsg.getRaw_message()); if (checkResultImage.equals("禁言")){ - time_now = new Timestamp(System.currentTimeMillis()); - df = new SimpleDateFormat("yyyy-MM-dd"); - date_now = df.format(time_now); banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); if(banTime == null) { //查询无角色 @@ -325,10 +322,26 @@ public ReplyMsg receive(String msg) { banTime.setUpdateTime(timestamp); banTime.setDate(date_now); banTime.setBan_times(0); - banTime = banTimeRepository.save(banTime); + banTimeRepository.save(banTime); } + + banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); + long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - if (delay_time<=5){ + + df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + System.out.println("time_now:"+ df.format(time_now.getTime())); + System.out.println("bantime:"+df.format(banTime.getUpdateTime().getTime())); + System.out.println("delay_time2:"+delay_time); + + if (delay_time<=15){ + System.out.println("message_id:"+receiveMsg.getMessage_id()); + String url = "http://127.0.0.1:5700/delete_msg"; + JSONObject postData = new JSONObject(); + postData.put("message_id",receiveMsg.getMessage_id()); + RestTemplate client = new RestTemplate(); + JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); return null; } else { @@ -337,10 +350,12 @@ public ReplyMsg receive(String msg) { banTime.getBan_times()+1, time_now ); + time_now = new Timestamp(System.currentTimeMillis()); + + System.out.println("写入完成:"+df.format(time_now)); - BanTime banTime1 = banTimeRepository.findBanTimesTodayByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); ReplyMsg replyMsg = new ReplyMsg(); - if (banTime1.getBan_times()==1){ + if (banTime.getBan_times()==1){ replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); } else { @@ -363,7 +378,6 @@ public ReplyMsg receive(String msg) { List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { - System.out.println(m.getAnswer()); if (m.getQuestion().contains("md") && receiveMsg.getRaw_message().contains("md5")){ break; } From ed5c1bc80a2d56eaace74bb9993b153743bc90d4 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 19 Apr 2023 11:06:41 +0800 Subject: [PATCH 49/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index e385a53..3e2b643 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -335,7 +335,7 @@ public synchronized ReplyMsg receive(String msg) { System.out.println("bantime:"+df.format(banTime.getUpdateTime().getTime())); System.out.println("delay_time2:"+delay_time); - if (delay_time<=15){ + if (delay_time<=15 && banTime.getBan_times() != 1){ System.out.println("message_id:"+receiveMsg.getMessage_id()); String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); From 6e7f748ca0d5fa96480802a85f1e1a025ed23cd2 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 19 Apr 2023 12:29:51 +0800 Subject: [PATCH 50/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 3e2b643..e385a53 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -335,7 +335,7 @@ public synchronized ReplyMsg receive(String msg) { System.out.println("bantime:"+df.format(banTime.getUpdateTime().getTime())); System.out.println("delay_time2:"+delay_time); - if (delay_time<=15 && banTime.getBan_times() != 1){ + if (delay_time<=15){ System.out.println("message_id:"+receiveMsg.getMessage_id()); String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); From 43484fae6947a43951df939f7d570f7c10b5d0e2 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 19 Apr 2023 12:53:25 +0800 Subject: [PATCH 51/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index e385a53..59d4d89 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -329,14 +329,7 @@ public synchronized ReplyMsg receive(String msg) { long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - System.out.println("time_now:"+ df.format(time_now.getTime())); - System.out.println("bantime:"+df.format(banTime.getUpdateTime().getTime())); - System.out.println("delay_time2:"+delay_time); - if (delay_time<=15){ - System.out.println("message_id:"+receiveMsg.getMessage_id()); String url = "http://127.0.0.1:5700/delete_msg"; JSONObject postData = new JSONObject(); postData.put("message_id",receiveMsg.getMessage_id()); @@ -350,10 +343,8 @@ public synchronized ReplyMsg receive(String msg) { banTime.getBan_times()+1, time_now ); - time_now = new Timestamp(System.currentTimeMillis()); - - System.out.println("写入完成:"+df.format(time_now)); + banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); ReplyMsg replyMsg = new ReplyMsg(); if (banTime.getBan_times()==1){ replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); @@ -378,10 +369,7 @@ public synchronized ReplyMsg receive(String msg) { List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { if(m.isExact()&&receiveMsg.getRaw_message().contains(m.getQuestion())) { - if (m.getQuestion().contains("md") && receiveMsg.getRaw_message().contains("md5")){ - break; - } - else if (m.getAnswer().equals("禁言")){ + if (m.getAnswer().equals("禁言")){ time_now = new Timestamp(System.currentTimeMillis()); df = new SimpleDateFormat("yyyy-MM-dd"); @@ -418,17 +406,23 @@ else if (m.getAnswer().equals("禁言")){ time_now ); - List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); - int ban_times=0; - for (int i = 0; i < list.size(); i++) { - ban_times += list.get(i).getBan_times(); - } + banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); ReplyMsg replyMsg = new ReplyMsg(); - replyMsg.setBan_duration((ban_times/5+1)*30*60); + if (banTime.getBan_times()==1){ + replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); + } + else { + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i =0; i < list.size(); i++) { + ban_times += list.get(i).getBan_times(); + } + replyMsg.setBan_duration((ban_times/5+1)*30*60); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); + } replyMsg.setAt_sender(true); replyMsg.setAuto_escape(false); - replyMsg.setBan(true); - replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); System.out.println(replyMsg); return replyMsg; } From 9e790735cfba9385e51ba91a9d41f939f371a083 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Wed, 19 Apr 2023 13:00:01 +0800 Subject: [PATCH 52/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=A6=81=E8=A8=80?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 52 +++++++------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 59d4d89..7c75510 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -325,45 +325,32 @@ public synchronized ReplyMsg receive(String msg) { banTimeRepository.save(banTime); } + banTimeRepository.modifyUpdateBanTimes( + banTime.getId(), + banTime.getBan_times()+1, + time_now + ); banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); - long delay_time = (time_now.getTime()-banTime.getUpdateTime().getTime())/ 1000; - - if (delay_time<=15){ - String url = "http://127.0.0.1:5700/delete_msg"; - JSONObject postData = new JSONObject(); - postData.put("message_id",receiveMsg.getMessage_id()); - RestTemplate client = new RestTemplate(); - JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); - return null; + ReplyMsg replyMsg = new ReplyMsg(); + if (banTime.getBan_times()==1){ + replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); } else { - banTimeRepository.modifyUpdateBanTimes( - banTime.getId(), - banTime.getBan_times()+1, - time_now - ); - - banTime = banTimeRepository.findRoleBynumber(receiveMsg.getSender().getUser_id(),date_now,receiveMsg.getGroup_id()); - ReplyMsg replyMsg = new ReplyMsg(); - if (banTime.getBan_times()==1){ - replyMsg.setReply("每日第一次禁言会被赦免,要乖噢~"); - } - else { - List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); - int ban_times=0; - for (int i =0; i < list.size(); i++) { + List list = banTimeRepository.findBanTimesByGroup(receiveMsg.getSender().getUser_id(),receiveMsg.getGroup_id()); + int ban_times=0; + for (int i =0; i < list.size(); i++) { ban_times += list.get(i).getBan_times(); - } - replyMsg.setBan_duration((ban_times/5+1)*30*60); - replyMsg.setBan(true); - replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); } - replyMsg.setAt_sender(true); - replyMsg.setAuto_escape(false); - System.out.println(replyMsg); - return replyMsg; + replyMsg.setBan_duration((ban_times/5+1)*30*60); + replyMsg.setBan(true); + replyMsg.setReply("[CQ:image,file=save/AB59F6053D317B67646AA3B363B87415]"); } + replyMsg.setAt_sender(true); + replyMsg.setAuto_escape(false); + System.out.println(replyMsg); + return replyMsg; + } List result = msgNoPrefixRepository.findMsgNPList(); @@ -399,7 +386,6 @@ public synchronized ReplyMsg receive(String msg) { banTime.setBan_times(0); banTime = banTimeRepository.save(banTime); } - banTimeRepository.modifyUpdateBanTimes( banTime.getId(), banTime.getBan_times()+1, From a8e5f90f9722c4c0f7ce2e2a7a425ff53968528c Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Sat, 6 May 2023 16:20:05 +0800 Subject: [PATCH 53/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E6=88=90?= =?UTF-8?q?=E5=88=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/serviceImpl/MsgServiceImpl.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 7c75510..1601a95 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1,6 +1,7 @@ package com.badeling.msbot.serviceImpl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.MsgZbCalculate; @@ -1685,6 +1686,40 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(mes); return replyMsg; } + if(raw_message.startsWith(MsbotConst.botName+"查成分")){ + String url = "http://127.0.0.1:5700/get_group_honor_info"; + JSONObject postData = new JSONObject(); + postData.put("group_id",receiveMsg.getGroup_id()); + postData.put("type","talkative"); + RestTemplate client = new RestTemplate(); + JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); + JSONObject data = json.getObject("data",JSONObject.class); + JSONArray talkative_list = data.getJSONArray("talkative_list"); + String description=""; + int hot_num = 0; + for (int i=0;i=100 && hot_num<500){mes +="\r\n你很懒惰,请积极发言~";} + else if(hot_num>=500&&hot_num<1000){ mes +="\r\n你很活跃,请继续努力~"; } + else if (hot_num>=1000){mes +="\r\n你住群里了吧???";} + else {mes += "\r\n别潜水行不行???";} + replyMsg.setAt_sender(true); + replyMsg.setReply(mes); + return replyMsg; + + } if(raw_message.startsWith(MsbotConst.botName+"结账")){ if (raw_message.contains("[CQ:at")){ @@ -1819,6 +1854,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } } + if (raw_message.contains("禁言周报")) { //得到群成员信息 GroupMsg gp = new GroupMsg(); @@ -2662,5 +2698,12 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { groupMsgService.sendGroupMsg(gm); return null; } + + public class Talkative { + + public String group_id; + public String talkative_list; + + } } From 0de0792177ea7e4fbe154d4a23e531290d9d36db Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Sat, 6 May 2023 16:33:17 +0800 Subject: [PATCH 54/66] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9F=A5=E6=88=90?= =?UTF-8?q?=E5=88=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 1601a95..e8101a1 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1708,8 +1708,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } - //System.out.println("talkative_list:"+talkative_list); - //System.out.println("hot_num:"+hot_num); + System.out.println("talkative_list:"+talkative_list); + System.out.println("hot_num:"+hot_num); String mes = "你的活跃度:"+hot_num; if(hot_num>=100 && hot_num<500){mes +="\r\n你很懒惰,请积极发言~";} else if(hot_num>=500&&hot_num<1000){ mes +="\r\n你很活跃,请继续努力~"; } From 692fc335582b54417d3cabef8b7f731514168752 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Sat, 17 Jun 2023 15:50:57 +0800 Subject: [PATCH 55/66] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badeling/msbot/service/DrawService.java | 5 + .../msbot/serviceImpl/DrawServiceImpl.java | 148 +++++++++++++++++- .../msbot/serviceImpl/MsgServiceImpl.java | 34 +++- 3 files changed, 177 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/badeling/msbot/service/DrawService.java b/src/main/java/com/badeling/msbot/service/DrawService.java index 57d96e8..efeb0b4 100644 --- a/src/main/java/com/badeling/msbot/service/DrawService.java +++ b/src/main/java/com/badeling/msbot/service/DrawService.java @@ -1,8 +1,10 @@ package com.badeling.msbot.service; import com.badeling.msbot.entity.MonvTime; +import com.badeling.msbot.entity.Msg; import org.springframework.stereotype.Service; +import java.util.List; @Service @@ -21,6 +23,9 @@ public interface DrawService { String kemomimiDraw() throws Exception; + String kemomimiDraw2(List pick) throws Exception; + + String throwSomeone(String headImg) throws Exception; String pouchSomeone(String saveTempImage) throws Exception; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 04e9ec5..361f341 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -6,6 +6,7 @@ import com.badeling.msbot.domain.Photo; import com.badeling.msbot.entity.Friends; import com.badeling.msbot.entity.MonvTime; +import com.badeling.msbot.entity.Msg; import com.badeling.msbot.repository.FriendsRepository; import com.badeling.msbot.repository.MonvTimeRepository; import com.badeling.msbot.service.DrawService; @@ -614,11 +615,7 @@ public String kemomimiDraw() throws Exception { String saveFilePath = MsbotConst.imageUrl + uuid +".png"; BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); BufferedImage buffImg = null; - //获取各个等级浮莲子的数量 -// int f2 = 10; -// int f3 = 9; -// int f4 = 9; -// int f5 = 1; + int f2 = 60; int f3 = 26; int f4 = 19; @@ -647,7 +644,10 @@ public String kemomimiDraw() throws Exception { star = 2; f = "2-"+random2; } + BufferedImage friends = createKomomimi(f,star); + + if(count<=5) { buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); }else { @@ -667,7 +667,115 @@ public String kemomimiDraw() throws Exception { generateWaterFile(newBufferedImage, saveFilePath); return "[CQ:image,file=" + uuid +".jpg]"; } - //生成十连图片 + + @Override + public String kemomimiDraw2(List pick) throws Exception { + Random r = new Random(); + HashSet rr = new HashSet<>(); + boolean has5Frends =false; + //系统生成随机数 + while (rr.size() < 10) { + int i = r.nextInt(10000)+1; + if(i<300) { + has5Frends = true; + } + rr.add(i); + } + /** + * i为编号 + star 5 <300 + star 4 <2200 + star 3 <4800 + star 2 <10000 + */ + if(!has5Frends) { + int i = r.nextInt(10000)+1; + if(i<500) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(5000)+4801; + rr.add(j); + } + }else if(i<800) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(2500)+2201; + rr.add(j); + } + }else if(i<1000) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(1800)+301; + rr.add(j); + } + } + } + + //创建浮莲子 + String sourceFilePath; + if(has5Frends) { + sourceFilePath = MsbotConst.imageUrl + "kf3/" + "2.png"; + }else { + sourceFilePath = MsbotConst.imageUrl + "kf3/" + "1.png"; + } + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + BufferedImage buffImg = null; + + int f2 = 60; + int f3 = 26; + int f4 = 19; + int f5 = 3; + + // 构建叠加层 + int count =1; + for(int random:rr){ + String f; + int star; + + if(random<300) { + int random2 = r.nextInt(f5)+1; + star = 5; + f = "5-"+random2; + }else if(random<300+1900) { + int random2 = r.nextInt(f4)+1; + star = 4; + f = "4-"+random2; + }else if(random<200+1900+2700) { + int random2 = r.nextInt(f3)+1; + star = 3; + f = "3-"+random2; + }else{ + int random2 = r.nextInt(f2)+1; + star = 2; + f = "2-"+random2; + } + + BufferedImage friends = createKomomimi2(count,pick,star); + + + if(count<=5) { + buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); + }else { + buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-6) , 369, 1.0f); + } + count = count + 1; + } +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + buffImg.getWidth(), buffImg.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, + Color.WHITE, null); + // write to jpeg file + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } + + //生成十连图片 private BufferedImage createKomomimi(String id,int star) throws Exception { String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; String waterFilePath; @@ -686,6 +794,34 @@ private BufferedImage createKomomimi(String id,int star) throws Exception { return buffImg; } + private BufferedImage createKomomimi2(int count,List pick,int star) throws Exception { + String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; + String waterFilePath; + + String pic = pick.get(count).getAnswer(); + String path = pic.substring(pic.indexOf("file=")+5,pic.indexOf("]")); + + waterFilePath = MsbotConst.imageUrl + path; + // 构建叠加层 + BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f); + + //加边框 + if(star==5){ + waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame_kiseki.png"; + } + else{ + waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame.png"; + } + buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); + //加星星 + waterFilePath = MsbotConst.imageUrl + "kf3/" + "star" + star + ".png"; + BufferedImage starImg = ImageIO.read(new File(waterFilePath)); + buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); + // 输出水印图片 +// generateWaterFile(buffImg, saveFilePath); + return buffImg; + } + @Override public String throwSomeone(String headImg) throws Exception { String sourceFilePath = MsbotConst.imageUrl + "img/throw.jpg"; diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index e8101a1..b0e2976 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1678,7 +1678,27 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.contains("抽蠢猫")) { String mes; try { - mes = drawService.kemomimiDraw(); + List list = new ArrayList(); + List pick = new ArrayList(); + + + String command = "爆照"; + while (it.hasNext()) { + msg = it.next(); + if (msg.getQuestion().equals(command)) { + list.add(msg); + } + } + if(list.size()!=0) { + Random r = new Random(); + while (pick.size()<=10){ + int random = r.nextInt(list.size()); + if(!pick.contains(list.get(random))){ + pick.add(list.get(random)); + } + } + } + mes = drawService.kemomimiDraw2(pick); } catch (Exception e) { e.printStackTrace(); mes = "图片文件缺失。"; @@ -1687,13 +1707,17 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } if(raw_message.startsWith(MsbotConst.botName+"查成分")){ - String url = "http://127.0.0.1:5700/get_group_honor_info"; + String url = "http://127.0.0.1:5700/get_group_member_info"; JSONObject postData = new JSONObject(); postData.put("group_id",receiveMsg.getGroup_id()); - postData.put("type","talkative"); + postData.put("user_id",receiveMsg.getUser_id()); + postData.put("no_cache",false); RestTemplate client = new RestTemplate(); JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); + System.out.println("json:"+json); + JSONObject data = json.getObject("data",JSONObject.class); + System.out.println("data:"+data); JSONArray talkative_list = data.getJSONArray("talkative_list"); String description=""; int hot_num = 0; @@ -2510,6 +2534,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } + + //查找答案 List list = new ArrayList(); List rep = new ArrayList(); @@ -2535,7 +2561,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { }else if(similarity==similar){ rep.add(tempMsg); } - } + } Random r = new Random(); int random = r.nextInt(rep.size()); replyMsg.setAt_sender(true); From 355d145162b12baf3f2badc2b2626c17b03f27a7 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Sat, 17 Jun 2023 15:59:27 +0800 Subject: [PATCH 56/66] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/serviceImpl/MsgServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index b0e2976..33d1e30 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1714,10 +1714,10 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { postData.put("no_cache",false); RestTemplate client = new RestTemplate(); JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); - System.out.println("json:"+json); + //System.out.println("json:"+json); JSONObject data = json.getObject("data",JSONObject.class); - System.out.println("data:"+data); + //System.out.println("data:"+data); JSONArray talkative_list = data.getJSONArray("talkative_list"); String description=""; int hot_num = 0; @@ -1732,8 +1732,8 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } - System.out.println("talkative_list:"+talkative_list); - System.out.println("hot_num:"+hot_num); + //System.out.println("talkative_list:"+talkative_list); + //System.out.println("hot_num:"+hot_num); String mes = "你的活跃度:"+hot_num; if(hot_num>=100 && hot_num<500){mes +="\r\n你很懒惰,请积极发言~";} else if(hot_num>=500&&hot_num<1000){ mes +="\r\n你很活跃,请继续努力~"; } From d6429b6d73a0d5c3830ab7fc33c69914827e51ac Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Sat, 17 Jun 2023 16:45:30 +0800 Subject: [PATCH 57/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badeling/msbot/controller/NewImageUtils.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index c5c5fe9..7b06fe7 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -1,10 +1,7 @@ package com.badeling.msbot.controller; -import java.awt.AlphaComposite; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import javax.imageio.ImageIO; +import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; @@ -14,8 +11,6 @@ import java.io.File; import java.io.IOException; -import javax.imageio.ImageIO; - public class NewImageUtils{ @@ -57,11 +52,14 @@ public static BufferedImage watermark(BufferedImage buffImg, BufferedImage water // 创建Graphics2D对象,用在底图对象上绘图 Graphics2D g2d = buffImg.createGraphics(); int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 - int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + + int proportion = waterImgWidth/200; + + int waterImgHeight = waterImg.getHeight()/proportion;// 获取层图的高度 // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 绘制 - g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.drawImage(waterImg, x, y, 200, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 return buffImg; } From c7b3a5d753ee0697eeb489de0256111d55b9dabb Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 20 Jun 2023 10:53:06 +0800 Subject: [PATCH 58/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/NewImageUtils.java | 28 ++++++++--- .../msbot/serviceImpl/DrawServiceImpl.java | 47 ++++++------------- .../msbot/serviceImpl/MsgServiceImpl.java | 3 +- 3 files changed, 37 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index 7b06fe7..0312ba1 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -39,11 +39,26 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f // 创建Graphics2D对象,用在底图对象上绘图 Graphics2D g2d = buffImg.createGraphics(); int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 - int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + int waterImgHeight=0; + int rate = (int) waterImgWidth/160; + + if (rate ==0 ){ + waterImgHeight = waterImg.getHeight();// 获取层图的高度 + } + else{ + waterImgHeight = waterImg.getHeight()/rate;// 获取层图的高度 + } + + //System.out.println("waterImgWidth:"+waterImgWidth); + //System.out.println("waterImgHeight:"+waterImgHeight); + // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);//设置抗锯齿 + + // 绘制 - g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.drawImage(waterImg, x, y, 160, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 return buffImg; } @@ -52,14 +67,13 @@ public static BufferedImage watermark(BufferedImage buffImg, BufferedImage water // 创建Graphics2D对象,用在底图对象上绘图 Graphics2D g2d = buffImg.createGraphics(); int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 - int proportion = waterImgWidth/200; - - int waterImgHeight = waterImg.getHeight()/proportion;// 获取层图的高度 // 在图形和图像中实现混合和透明效果 + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 绘制 - g2d.drawImage(waterImg, x, y, 200, waterImgHeight, null); + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 return buffImg; } @@ -74,6 +88,8 @@ public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int int waterImgHeight = waterImg.getHeight();// 获取层图的高度 // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);//设置抗锯齿 + // 绘制 g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 361f341..6d4bfb2 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -12,6 +12,7 @@ import com.badeling.msbot.service.DrawService; import com.badeling.msbot.util.Loadfont; import com.badeling.msbot.util.Loadfont2; +import org.apache.commons.codec.digest.DigestUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -25,10 +26,7 @@ import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; +import java.io.*; import java.net.URL; import java.net.URLConnection; import java.util.List; @@ -723,37 +721,11 @@ public String kemomimiDraw2(List pick) throws Exception { BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); BufferedImage buffImg = null; - int f2 = 60; - int f3 = 26; - int f4 = 19; - int f5 = 3; - // 构建叠加层 int count =1; for(int random:rr){ - String f; - int star; - - if(random<300) { - int random2 = r.nextInt(f5)+1; - star = 5; - f = "5-"+random2; - }else if(random<300+1900) { - int random2 = r.nextInt(f4)+1; - star = 4; - f = "4-"+random2; - }else if(random<200+1900+2700) { - int random2 = r.nextInt(f3)+1; - star = 3; - f = "3-"+random2; - }else{ - int random2 = r.nextInt(f2)+1; - star = 2; - f = "2-"+random2; - } - - BufferedImage friends = createKomomimi2(count,pick,star); + BufferedImage friends = createKomomimi2(count,pick); if(count<=5) { buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); @@ -794,7 +766,7 @@ private BufferedImage createKomomimi(String id,int star) throws Exception { return buffImg; } - private BufferedImage createKomomimi2(int count,List pick,int star) throws Exception { + private BufferedImage createKomomimi2(int count,List pick) throws Exception { String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; String waterFilePath; @@ -802,9 +774,15 @@ private BufferedImage createKomomimi2(int count,List pick,int star) throws String path = pic.substring(pic.indexOf("file=")+5,pic.indexOf("]")); waterFilePath = MsbotConst.imageUrl + path; + String md5 = DigestUtils.md5Hex(new FileInputStream(waterFilePath)); + // 构建叠加层 BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f); + int num = Integer.parseInt(md5.substring(md5.length()-4),16); + int star = num % 4 + 2; + //System.out.println("star:"+star); + //加边框 if(star==5){ waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame_kiseki.png"; @@ -815,10 +793,13 @@ private BufferedImage createKomomimi2(int count,List pick,int star) throws buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); //加星星 waterFilePath = MsbotConst.imageUrl + "kf3/" + "star" + star + ".png"; + String saveFilePath = MsbotConst.imageUrl + "save/20230620_"+count+".png"; + BufferedImage starImg = ImageIO.read(new File(waterFilePath)); buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); // 输出水印图片 -// generateWaterFile(buffImg, saveFilePath); + generateWaterFile(buffImg, saveFilePath); + return buffImg; } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 33d1e30..7b1316b 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1675,13 +1675,12 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } - if(raw_message.contains("抽蠢猫")) { + if(raw_message.contains("抽猫") ||raw_message.contains("抽猫猫")) { String mes; try { List list = new ArrayList(); List pick = new ArrayList(); - String command = "爆照"; while (it.hasNext()) { msg = it.next(); From d51341b923fa4231a1428b777104ddd56a462ea8 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 20 Jun 2023 11:25:53 +0800 Subject: [PATCH 59/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=90=88=E6=88=90=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/NewImageUtils.java | 19 +++++++++++++++---- .../msbot/serviceImpl/DrawServiceImpl.java | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index 0312ba1..93622ec 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -54,8 +54,11 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);//设置抗锯齿 - + //设置抗锯齿 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); // 绘制 g2d.drawImage(waterImg, x, y, 160, waterImgHeight, null); @@ -70,8 +73,12 @@ public static BufferedImage watermark(BufferedImage buffImg, BufferedImage water int waterImgHeight = waterImg.getHeight();// 获取层图的高度 // 在图形和图像中实现混合和透明效果 - g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + // 绘制 g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 @@ -88,7 +95,11 @@ public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int int waterImgHeight = waterImg.getHeight();// 获取层图的高度 // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);//设置抗锯齿 + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + // 绘制 g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 6d4bfb2..11095fe 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -798,7 +798,7 @@ private BufferedImage createKomomimi2(int count,List pick) throws Exception BufferedImage starImg = ImageIO.read(new File(waterFilePath)); buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); // 输出水印图片 - generateWaterFile(buffImg, saveFilePath); + //generateWaterFile(buffImg, saveFilePath); return buffImg; } From f8c73eb171dcde1795d5dc48e73d842f00577447 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Tue, 20 Jun 2023 11:30:40 +0800 Subject: [PATCH 60/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/badeling/msbot/controller/NewImageUtils.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index 93622ec..5d2de02 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -46,7 +46,10 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f waterImgHeight = waterImg.getHeight();// 获取层图的高度 } else{ - waterImgHeight = waterImg.getHeight()/rate;// 获取层图的高度 + waterImgHeight = waterImg.getHeight()/rate;// 获取层图的高度 + if(waterImgHeight < 160){ + waterImgHeight = 160; + } } //System.out.println("waterImgWidth:"+waterImgWidth); From 7ec35dd8ccd0e31dc2b0495e15acaf7b6ca0ef8e Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Mon, 3 Jul 2023 10:46:11 +0800 Subject: [PATCH 61/66] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=85=A5=E7=BE=A4?= =?UTF-8?q?=E6=AC=A2=E8=BF=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msbot/controller/NewImageUtils.java | 41 +++++++++++++------ .../msbot/serviceImpl/DrawServiceImpl.java | 6 ++- .../msbot/serviceImpl/MsgServiceImpl.java | 7 ++++ 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index 5d2de02..d03e85e 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -13,6 +13,14 @@ public class NewImageUtils{ + private static void generateWaterFile(BufferedImage buffImg, String savePath) { + int temp = savePath.lastIndexOf(".") + 1; + try { + ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); + } catch (Exception e1) { + e1.printStackTrace(); + } + } /** * @@ -36,6 +44,7 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f BufferedImage buffImg = ImageIO.read(file); // 获取层图 BufferedImage waterImg = ImageIO.read(waterFile); + // 创建Graphics2D对象,用在底图对象上绘图 Graphics2D g2d = buffImg.createGraphics(); int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 @@ -52,6 +61,15 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f } } + BufferedImage updateImage=new BufferedImage(160,waterImgHeight, BufferedImage.TYPE_INT_RGB); + updateImage.getGraphics().drawImage(waterImg, 0, 0, 160, waterImgHeight, null); + + //int count = (int) (Math.random()*100)+1; + //System.out.println("count:"+count); + //String saveFilePath = MsbotConst.imageUrl +"test"+count+".png"; + //generateWaterFile(updateImage, saveFilePath); + + //System.out.println("waterImgWidth:"+waterImgWidth); //System.out.println("waterImgHeight:"+waterImgHeight); @@ -60,15 +78,18 @@ public static BufferedImage watermark(File file, File waterFile, int x, int y, f //设置抗锯齿 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); - g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + //g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); + // 绘制 - g2d.drawImage(waterImg, x, y, 160, waterImgHeight, null); + g2d.drawImage(updateImage, x, y, 160, waterImgHeight, null); g2d.dispose();// 释放图形上下文使用的系统资源 return buffImg; } + public static BufferedImage watermark(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException { // 创建Graphics2D对象,用在底图对象上绘图 Graphics2D g2d = buffImg.createGraphics(); @@ -77,10 +98,13 @@ public static BufferedImage watermark(BufferedImage buffImg, BufferedImage water // 在图形和图像中实现混合和透明效果 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); - g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + //g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); + g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); + // 绘制 g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); @@ -117,14 +141,7 @@ public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int * @param savePath * 图像加水印之后的保存路径 */ - public void generateWaterFile(BufferedImage buffImg, String savePath) { - int temp = savePath.lastIndexOf(".") + 1; - try { - ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); - } catch (IOException e1) { - e1.printStackTrace(); - } - } + //原定的星星代码 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 11095fe..8c4e681 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -791,9 +791,13 @@ private BufferedImage createKomomimi2(int count,List pick) throws Exception waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame.png"; } buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); + + String saveFilePath = MsbotConst.imageUrl + "save/20230620_"+count+".png"; + generateWaterFile(buffImg, saveFilePath); + + //加星星 waterFilePath = MsbotConst.imageUrl + "kf3/" + "star" + star + ".png"; - String saveFilePath = MsbotConst.imageUrl + "save/20230620_"+count+".png"; BufferedImage starImg = ImageIO.read(new File(waterFilePath)); buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 7b1316b..7df6875 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -2721,6 +2721,13 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { gm.setMessage(msg.getAnswer()); gm.setGroup_id(Long.parseLong(noticeMsg.getGroup_id())); groupMsgService.sendGroupMsg(gm); + + gm.setMessage("[CQ:at,qq=" + noticeMsg.getUser_id() + "]" + + "欢迎新人,请把群名片改为游戏id,进家族先看布告栏公告,家族规定每周必须打水路~"); + gm.setGroup_id(Long.parseLong(noticeMsg.getGroup_id())); + groupMsgService.sendGroupMsg(gm); + + return null; } From 75d938d46f1bcb9aa79c3a478d28c7b6142c3bc8 Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Fri, 7 Jul 2023 08:30:49 +0800 Subject: [PATCH 62/66] =?UTF-8?q?=E5=90=8C=E6=AD=A5v2.0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicationRunnerImpl.java | 152 +- .../msbot/controller/MsbotController.java | 68 +- .../msbot/controller/NewImageUtils.java | 20 + .../msbot/controller/ScheduleTask.java | 298 +++- .../badeling/msbot/domain/GlobalVariable.java | 37 +- .../msbot/domain/GroupMemberInfo.java | 122 ++ .../com/badeling/msbot/domain/NoticeMsg.java | 31 +- .../msbot/domain/ThrowGroupLeader.java | 15 + .../com/badeling/msbot/entity/Friends.java | 80 - .../com/badeling/msbot/entity/GroupInfo.java | 69 + .../badeling/msbot/entity/GroupMember.java | 77 + .../com/badeling/msbot/entity/Message.java | 54 + .../com/badeling/msbot/entity/MobInfo.java | 384 ++-- .../com/badeling/msbot/entity/MobName.java | 82 +- .../java/com/badeling/msbot/entity/Msg.java | 17 +- .../java/com/badeling/msbot/entity/Score.java | 50 + .../com/badeling/msbot/entity/SellAndBuy.java | 74 + .../msbot/repository/FriendsRepository.java | 27 - .../msbot/repository/GroupInfoRepository.java | 13 + .../repository/GroupMemberRepository.java | 30 + .../msbot/repository/MessageRepository.java | 36 + .../msbot/repository/MobInfoRepository.java | 26 +- .../msbot/repository/MobNameRepository.java | 38 +- .../msbot/repository/ScoreRepository.java | 37 + .../repository/SellAndBuyRepository.java | 20 + .../badeling/msbot/service/DrawService.java | 13 +- .../msbot/service/GroupMsgService.java | 19 +- .../badeling/msbot/service/WzXmlService.java | 16 +- .../ChannelOfficialServiceImpl.java | 567 +++--- .../msbot/serviceImpl/ChannelServiceImpl.java | 411 ++--- .../msbot/serviceImpl/DrawServiceImpl.java | 1586 ++++++++--------- .../serviceImpl/GroupMsgServiceImpl.java | 64 +- .../msbot/serviceImpl/MsgServiceImpl.java | 764 +++++--- .../serviceImpl/MvpImageServiceImpl.java | 1 + .../msbot/serviceImpl/RankServiceImpl.java | 251 +-- .../msbot/serviceImpl/WzXmlServiceImpl.java | 1347 +++++++------- .../java/com/badeling/msbot/util/CosSdk.java | 102 +- .../com/badeling/msbot/util/HttpUtil.java | 50 +- .../com/badeling/msbot/util/Loadfont2.java | 240 ++- .../java/com/badeling/msbot/util/MD5.java | 4 +- 40 files changed, 4096 insertions(+), 3196 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/domain/GroupMemberInfo.java create mode 100644 src/main/java/com/badeling/msbot/domain/ThrowGroupLeader.java delete mode 100644 src/main/java/com/badeling/msbot/entity/Friends.java create mode 100644 src/main/java/com/badeling/msbot/entity/GroupInfo.java create mode 100644 src/main/java/com/badeling/msbot/entity/GroupMember.java create mode 100644 src/main/java/com/badeling/msbot/entity/Message.java create mode 100644 src/main/java/com/badeling/msbot/entity/Score.java create mode 100644 src/main/java/com/badeling/msbot/entity/SellAndBuy.java delete mode 100644 src/main/java/com/badeling/msbot/repository/FriendsRepository.java create mode 100644 src/main/java/com/badeling/msbot/repository/GroupInfoRepository.java create mode 100644 src/main/java/com/badeling/msbot/repository/GroupMemberRepository.java create mode 100644 src/main/java/com/badeling/msbot/repository/MessageRepository.java create mode 100644 src/main/java/com/badeling/msbot/repository/ScoreRepository.java create mode 100644 src/main/java/com/badeling/msbot/repository/SellAndBuyRepository.java diff --git a/src/main/java/com/badeling/msbot/controller/ApplicationRunnerImpl.java b/src/main/java/com/badeling/msbot/controller/ApplicationRunnerImpl.java index 25064c6..db161a9 100644 --- a/src/main/java/com/badeling/msbot/controller/ApplicationRunnerImpl.java +++ b/src/main/java/com/badeling/msbot/controller/ApplicationRunnerImpl.java @@ -1,22 +1,170 @@ package com.badeling.msbot.controller; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.TreeSet; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import com.badeling.msbot.domain.GlobalVariable; +import com.badeling.msbot.domain.GroupMsg; +import com.badeling.msbot.domain.Result; +import com.badeling.msbot.entity.GroupInfo; +import com.badeling.msbot.entity.GroupMember; +import com.badeling.msbot.repository.GroupInfoRepository; +import com.badeling.msbot.repository.GroupMemberRepository; +import com.badeling.msbot.service.GroupMsgService; @Component public class ApplicationRunnerImpl implements ApplicationRunner{ //public class ApplicationRunnerImpl{ - + + @Autowired + GroupMsgService groupMsgService; + + @Autowired + GroupInfoRepository groupInfoRepository; + + @Autowired + GroupMemberRepository groupMemberRepository; + @Override public void run(ApplicationArguments args) throws Exception { TreeSet msgList = new TreeSet<>(); GlobalVariable.setMsgList(msgList); + Map newFriendsList = new HashMap<>(); + GlobalVariable.setNewFriendsMap(newFriendsList); + Map witchForestMap = new HashMap<>(); + GlobalVariable.setWitchForestMap(witchForestMap); + + System.out.println("初始程序执行完毕"); + + List list = new ArrayList(); + //获取群列表 + try { + Result groupList = groupMsgService.getGroupList(); + + if(groupList.getStatus().equals("ok")) { + @SuppressWarnings("unchecked") + List> data = (List>) groupList.getData(); + int countGroup = 0; + int addGroup = 0; + for(Map mapElement : data) { + GroupInfo groupInfo = new GroupInfo(); + list.add(""+mapElement.get("group_id")); + String group_id = ""+mapElement.get("group_id"); + String group_name = ""+mapElement.get("group_name"); + String group_memo = ""+mapElement.get("group_memo"); + GroupInfo findByGroupId = groupInfoRepository.findByGroupId(group_id); + if(findByGroupId==null) { + groupInfo.setGroup_id(group_id); + groupInfo.setGroup_name(group_name); + groupInfo.setGroup_memo(group_memo); + groupInfoRepository.save(groupInfo); + addGroup++; + } + countGroup++; + } + System.out.println("共获取"+countGroup+"个群,新增群聊"+addGroup+"个"); + } + } catch (Exception e) { + // 获取群列表失败 + e.printStackTrace(); + System.out.println("获取群列表失败"); + } + + + try { + //更新群成员信息 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + int countAdd = 0; + int countModify = 0; + int countLeave = 0; + int countSame = 0; + Long startTime = System.currentTimeMillis(); + List addList = new ArrayList(); + for(String group_id : list) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(group_id)); + Result groupMemberList = groupMsgService.getGroupMember(groupMsg); + List findGroupMemberList = groupMemberRepository.findGroupMemberByGroup(group_id); + Map groupMemberMap = new HashMap(); + for(GroupMember groupMember : findGroupMemberList) { + groupMemberMap.put(groupMember.getUser_id(), groupMember); + } + + @SuppressWarnings("unchecked") + List> data = (List>) groupMemberList.getData(); + for(Map map : data) { + String user_id = String.valueOf(map.get("user_id")); + if(groupMemberMap.containsKey(user_id)) { + GroupMember groupMember = groupMemberMap.get(user_id); + groupMemberMap.remove(user_id); + String leave_time = groupMember.getLeave_time(); + if(leave_time!=null&&!leave_time.isEmpty()) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(),""); + } + if(groupMember.getCard().equals(String.valueOf(map.get("card")))&&groupMember.getNickname().equals(String.valueOf(map.get("nickname")))) { + countSame++; + continue; + }else { + countModify++; + groupMemberRepository.modifyMemberInfo(groupMember.getId(), String.valueOf(map.get("nickname")), String.valueOf(map.get("card")), sdf.format(Long.parseLong(map.get("join_time")+"000"))); + } + }else { + String time = sdf.format(Long.parseLong(map.get("join_time")+"000")); + GroupMember groupMember = new GroupMember(); + groupMember.setCard(String.valueOf(map.get("card"))); + groupMember.setGroup_id(group_id); + groupMember.setJoin_time(time); + groupMember.setLeave_time(null); + groupMember.setNickname(String.valueOf(map.get("nickname"))); + groupMember.setUser_id(user_id); + addList.add(groupMember); + countAdd++; + } + } + + if(!groupMemberMap.isEmpty()) { + String time = sdf.format(System.currentTimeMillis()); + for(String temp : groupMemberMap.keySet()) { + GroupMember groupMember = groupMemberMap.get(temp); + if(groupMember.getLeave_time()==null||groupMember.getLeave_time().isEmpty()) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(), time); + countLeave++; + continue; + } + try { + if(Integer.parseInt(groupMember.getJoin_time())>Integer.parseInt(groupMember.getLeave_time())) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(), time); + countLeave++; + continue; + } + } catch (Exception e) { + System.out.println("统计减少人数时出错:"+groupMember.toString()); + } + } + } + + if(addList.size()>0) { + groupMemberRepository.saveAll(addList); + } + } + System.out.println("更新群成员信息成功:新增"+countAdd+"人,更新"+countModify+"人,离开"+countLeave+"人,保持"+countSame+"人,耗时"+((startTime-System.currentTimeMillis())/1000)+"ms"); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("更新群成员信息失败"); + } + + + } -} +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/controller/MsbotController.java b/src/main/java/com/badeling/msbot/controller/MsbotController.java index 14462a2..d982b9e 100644 --- a/src/main/java/com/badeling/msbot/controller/MsbotController.java +++ b/src/main/java/com/badeling/msbot/controller/MsbotController.java @@ -1,12 +1,14 @@ package com.badeling.msbot.controller; import com.alibaba.fastjson.JSON; +import com.badeling.msbot.domain.GroupMsg; import com.badeling.msbot.domain.ReplyMsg; import com.badeling.msbot.service.GroupMsgService; import com.badeling.msbot.service.MsgService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; @@ -16,43 +18,67 @@ @Controller @RequestMapping("/msg") public class MsbotController { - + @Autowired - MsgService msgService; - + MsgService msgService; + @Autowired GroupMsgService groupMsgService; - + @RequestMapping("/receive") @ResponseBody public String msgReceive(HttpServletRequest request) { String msg = null; - try { - msg = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); - } catch (IOException e) { - e.printStackTrace(); - } - if (msg == null) { - return null; - } - //解析收到的消息 + try { + msg = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); + } catch (IOException e) { + e.printStackTrace(); + } + if (msg == null) { + return null; + } + //解析收到的消息 // ReceiveMsg receiveMsg = null; - System.out.println(msg); + System.out.println(msg); ReplyMsg receive = msgService.receive(msg); //消息处理结束后 if(receive==null) { return null; } - + if(receive!=null&&receive.getReply()!=null) { System.out.println(receive.toString()); receive.setReply(receive.getReply().replaceAll("\\\\", "/")); } - + return JSON.toJSONString(receive); } - - - - -} + + //对接b站挂小心心的功能 可以忽略 + @RequestMapping("/server_bili") + @ResponseBody + public String msgServer(@RequestParam("title")String title,@RequestParam("desp")String desp) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong("348273823")); + String[] split = desp.split("用户:"); + for(String temp : split) { + if(temp.isEmpty()) { + continue; + }else { + while(temp.endsWith("\r")||temp.endsWith("\n")) { + temp = temp.substring(0,temp.length()-2); + } + groupMsg.setMessage(title+"\r\n"+"用户:"+temp); + groupMsgService.sendGroupMsg(groupMsg); + try { + Thread.sleep(1221); + } catch (Exception e) { + + } + } + } + return null; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java index d03e85e..ffa5d8e 100644 --- a/src/main/java/com/badeling/msbot/controller/NewImageUtils.java +++ b/src/main/java/com/badeling/msbot/controller/NewImageUtils.java @@ -333,4 +333,24 @@ public static BufferedImage setClip(BufferedImage srcImage,int radius){ } + //图片翻转 + public static BufferedImage mirrorImage(BufferedImage image) { + int width = image.getWidth(); + int height = image.getHeight(); + + for (int j = 0; j < height; j++) { + int l = 0, r = width - 1; + while (l < r) { + int pl = image.getRGB(l, j); + int pr = image.getRGB(r, j); + image.setRGB(l, j, pr); + image.setRGB(r, j, pl); + l++; + r--; + } + } + return image; + + } + } \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java index c58b1c3..72a4cd1 100644 --- a/src/main/java/com/badeling/msbot/controller/ScheduleTask.java +++ b/src/main/java/com/badeling/msbot/controller/ScheduleTask.java @@ -1,27 +1,44 @@ package com.badeling.msbot.controller; +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.domain.GlobalVariable; import com.badeling.msbot.domain.GroupMsg; import com.badeling.msbot.domain.Result; -import com.badeling.msbot.entity.BanTime; -import com.badeling.msbot.entity.MonvTime; +import com.badeling.msbot.entity.GroupInfo; +import com.badeling.msbot.entity.GroupMember; +import com.badeling.msbot.entity.Message; import com.badeling.msbot.entity.RereadSentence; import com.badeling.msbot.entity.RereadTime; -import com.badeling.msbot.repository.BanTimeRepository; -import com.badeling.msbot.repository.MonvTimeRepository; +import com.badeling.msbot.entity.Score; +import com.badeling.msbot.entity.SellAndBuy; +import com.badeling.msbot.entity.BanTime; +import com.badeling.msbot.entity.MonvTime; + +import com.badeling.msbot.repository.GroupInfoRepository; +import com.badeling.msbot.repository.GroupMemberRepository; +import com.badeling.msbot.repository.MessageRepository; import com.badeling.msbot.repository.RereadSentenceRepository; import com.badeling.msbot.repository.RereadTimeRepository; +import com.badeling.msbot.repository.ScoreRepository; +import com.badeling.msbot.repository.SellAndBuyRepository; import com.badeling.msbot.service.GroupMsgService; import com.badeling.msbot.util.CosSdk; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; +import com.badeling.msbot.repository.BanTimeRepository; +import com.badeling.msbot.repository.MonvTimeRepository; -import java.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.Map; @EnableScheduling @Component @@ -36,33 +53,276 @@ public class ScheduleTask { @Autowired private RereadTimeRepository rereadTimeRepository; + @Autowired + SellAndBuyRepository sellAndBuyRepository; + + @Autowired + GroupInfoRepository groupInfoRepository; + + @Autowired + MessageRepository messageRepository; + + @Autowired + ScoreRepository scoreRepository; + + @Autowired + GroupMemberRepository groupMemberRepository; @Autowired private BanTimeRepository banTimeRepository; @Autowired private MonvTimeRepository monvTimeRepository; - //清除图片缓存 - @Scheduled(cron="0 30 4 ? * MON") - private void delete() { + + @Scheduled(cron="23 24 5 * * ?") + private void deleteExpiredSellAndBuy() { + //测试程序运行时间 + Long time1,time2; + //删除过期的收售数据 + time1 = System.currentTimeMillis(); + Long deleteTime = System.currentTimeMillis() - 1000*60*60*48; + List sabList = sellAndBuyRepository.findSabByTime(deleteTime+""); + if(sabList.size()>0) { + for(SellAndBuy sab :sabList) { + sellAndBuyRepository.delete(sab); + } + } + //统计昨天聊天记录 添加积分 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String time = sdf.format(time1-1000*60*60*24); + List list = messageRepository.findAllMsg(); + Map map = new HashMap(); + + for(Message ms : list) { + Integer score = null; + if(ms.getRaw_message().startsWith(MsbotConst.botName)||ms.getRaw_message().startsWith("[CQ:at,qq="+MsbotConst.botId+"]")) { + score = (int)(Math.log(ms.getRaw_message().length()+1)*75*(-1)); + }else { + score = (int)(Math.log(ms.getRaw_message().length()+1)*15); + } + + if(map.containsKey(ms.getUser_id()+"-"+ms.getGroup_id())) { + score = score + map.get(ms.getUser_id()+"-"+ms.getGroup_id()); + } + map.put(ms.getUser_id()+"-"+ms.getGroup_id(), score); + } + Set keySet = map.keySet(); + List addList = new ArrayList(); + for(String temp : keySet) { + String[] split = temp.split("-"); + Score s = new Score(); + s.setUser_id(split[0]); + s.setGroup_id(split[1]); + s.setScore(map.get(temp)); + s.setTime(Integer.parseInt(time)); + addList.add(s); + } + scoreRepository.saveAll(addList); + messageRepository.deleteAll(list); + //归总前两周的积分 + time = sdf.format(time1-1000*60*60*24*7); + List scoreList = scoreRepository.findLastWeekScore2(time,"99999999"); + List modifyScore = new ArrayList(); + if(scoreList!=null&&!scoreList.isEmpty()) { + List findLastWeekScore = scoreRepository.findLastWeekScore(time,"99999999"); + for(Object[] obj : findLastWeekScore) { + Score s = new Score(); + s.setGroup_id(String.valueOf(obj[0])); + s.setUser_id(String.valueOf(obj[1])); + s.setScore(Integer.parseInt(String.valueOf(obj[2]))); + s.setTime(99999999); + modifyScore.add(s); + } + scoreRepository.deleteAll(scoreList); + scoreRepository.saveAll(modifyScore); + } + + + sdf = new SimpleDateFormat("EEEE"); + //星期一清除图片缓存 + //计数器 + Long size = 0l; + int count = 0; + if(sdf.format(time1).equals("星期一")) { try { //清除云端缓存 CosSdk.deleteAllFile(); } catch (Exception e) { } - - String url = MsbotConst.imageUrl; File file = new File(url); String[] fileList = file.list(); - + for(String a : fileList) { File file2 = new File(url,a); - if(file2.isFile()&&!file2.getName().contains(MsbotConst.channelBotId)) { + if(file2.isFile()&&a.length()==32&&!file2.getName().contains(MsbotConst.channelBotId)) { + size = size + file2.length(); file2.delete(); + count++; + } + } + } + time2=System.currentTimeMillis(); + String reply = ""; + if(count!=0) { + reply = "程序运行总时间: "+(time2-time1)+"ms"; + reply = reply + "\r\n清理图片" + count + "张,共计" + (size/1024/1024) + "MB"; + } + + try { + List group_list = new ArrayList(); + Result groupList = groupMsgService.getGroupList(); + if(groupList.getStatus().equals("ok")) { + @SuppressWarnings("unchecked") + List> data = (List>) groupList.getData(); + for(Map mapElement : data) { + GroupInfo groupInfo = new GroupInfo(); + group_list.add(String.valueOf(mapElement.get("group_id"))); + String group_id = ""+mapElement.get("group_id"); + String group_name = ""+mapElement.get("group_name"); + String group_memo = ""+mapElement.get("group_memo"); + GroupInfo findByGroupId = groupInfoRepository.findByGroupId(group_id); + if(findByGroupId==null) { + groupInfo.setGroup_id(group_id); + groupInfo.setGroup_name(group_name); + groupInfo.setGroup_memo(group_memo); + groupInfoRepository.save(groupInfo); + } + } + } + //更新群成员信息 + sdf = new SimpleDateFormat("yyyyMMdd"); + int countAdd = 0; + int countModify = 0; + int countLeave = 0; + int countSame = 0; + Long startTime = System.currentTimeMillis(); + for(String group_id : group_list) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(group_id)); + Result groupMemberList = groupMsgService.getGroupMember(groupMsg); + List findGroupMemberList = groupMemberRepository.findGroupMemberByGroup(group_id); + Map groupMemberMap = new HashMap(); + for(GroupMember groupMember : findGroupMemberList) { + groupMemberMap.put(groupMember.getUser_id(), groupMember); + } + + @SuppressWarnings("unchecked") + List> data = (List>) groupMemberList.getData(); + for(Map map2 : data) { + String user_id = String.valueOf(map2.get("user_id")); + if(groupMemberMap.containsKey(user_id)) { + GroupMember groupMember = groupMemberMap.get(user_id); + groupMemberMap.remove(user_id); + String leave_time = groupMember.getLeave_time(); + if(leave_time!=null&&!leave_time.isEmpty()) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(),""); + } + if(groupMember.getCard().equals(String.valueOf(map2.get("card")))&&groupMember.getNickname().equals(String.valueOf(map2.get("nickname")))) { + countSame++; + continue; + }else { + countModify++; + groupMemberRepository.modifyMemberInfo(groupMember.getId(), String.valueOf(map2.get("nickname")), String.valueOf(map2.get("card")), sdf.format(Long.parseLong(map2.get("join_time")+"000"))); + } + }else { + String join_time = sdf.format(Long.parseLong(map2.get("join_time")+"000")); + GroupMember groupMember = new GroupMember(); + groupMember.setCard(String.valueOf(map2.get("card"))); + groupMember.setGroup_id(group_id); + groupMember.setJoin_time(join_time); + groupMember.setLeave_time(null); + groupMember.setNickname(String.valueOf(map2.get("nickname"))); + groupMember.setUser_id(user_id); + groupMemberRepository.save(groupMember); + countAdd++; + } + } + + if(!groupMemberMap.isEmpty()) { + time = sdf.format(System.currentTimeMillis()); + for(String temp : groupMemberMap.keySet()) { + GroupMember groupMember = groupMemberMap.get(temp); + if(groupMember.getLeave_time()==null||groupMember.getLeave_time().isEmpty()) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(), time); + countLeave++; + } + try { + if(Integer.parseInt(groupMember.getJoin_time())>Integer.parseInt(groupMember.getLeave_time())) { + groupMemberRepository.modifyMemberLeaveTime(groupMember.getId(), time); + countLeave++; + continue; + } + } catch (Exception e) { + System.out.println("统计减少人数时出错:"+groupMember.toString()); + } + } } + + } + System.out.println("更新群成员信息成功:新增"+countAdd+"人,更新"+countModify+"人,离开"+countLeave+"人,保持"+countSame+"人,耗时"+((startTime-System.currentTimeMillis())/1000)+"ms"); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("更新群成员信息失败"); + } + + if(MsbotConst.notice_group!=null&&!MsbotConst.notice_group.isEmpty()&&!reply.isEmpty()) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(MsbotConst.notice_group)); + groupMsg.setMessage(reply); + groupMsgService.sendGroupMsg(groupMsg); } + + System.out.println(reply); + + } + + //新成员提醒修改群名片 + @Scheduled(cron="24 * * * * ?") + private void remindModifyName() { + Map newFriendsMap = GlobalVariable.getNewFriendsMap(); + if(newFriendsMap.size()!=0) { + for(String key : newFriendsMap.keySet()) { + if(System.currentTimeMillis()>newFriendsMap.get(key)) { + try { + String[] split = key.split("-"); + String user_id = split[0]; + String group_id = split[1]; + GroupInfo findByGroupId = groupInfoRepository.findByGroupId(group_id); + String welcome = findByGroupId.getWelcome(); + + //懒得找单个查询的接口了 先直接拉取群列表的消息 后期如果空闲了再改 + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(group_id)); + Result groupMember = groupMsgService.getGroupMember(groupMsg); + @SuppressWarnings("unchecked") + List> data = (List>) groupMember.getData(); + boolean alreadyModify = false; + for(Map map : data) { + if(String.valueOf(map.get("user_id")).equals(user_id)) { + if(!String.valueOf(map.get("nickname")).isEmpty()&&!String.valueOf(map.get("nickname")).equals(String.valueOf(map.get("card")))) { + alreadyModify = true; + } + break; + } + } + + if(welcome!=null&&!welcome.isEmpty()&&!alreadyModify) { + groupMsg.setMessage("[CQ:at,qq="+user_id+"]"+welcome); + groupMsgService.sendGroupMsg(groupMsg); + } + Thread.sleep(654); + } catch (Exception e) { + e.printStackTrace(); + } + newFriendsMap.remove(key); + } + } + GlobalVariable.setNewFriendsMap(newFriendsMap); + } + } + //复读机周报 @Scheduled(cron="0 0 0 ? * MON") diff --git a/src/main/java/com/badeling/msbot/domain/GlobalVariable.java b/src/main/java/com/badeling/msbot/domain/GlobalVariable.java index dd7c912..b3c1047 100644 --- a/src/main/java/com/badeling/msbot/domain/GlobalVariable.java +++ b/src/main/java/com/badeling/msbot/domain/GlobalVariable.java @@ -1,21 +1,26 @@ package com.badeling.msbot.domain; -import java.util.TreeSet; - import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import java.util.Map; +import java.util.TreeSet; + @Component @ConfigurationProperties(prefix="service.properties") public class GlobalVariable { - + //消息记录 public static TreeSet msgList; - + //新成员 + public static Map newFriendsMap; + //魔女抽奖CD + public static Map witchForestMap; + public GlobalVariable() { - + } - + public static TreeSet getMsgList() { return msgList; } @@ -23,4 +28,22 @@ public static TreeSet getMsgList() { public static void setMsgList(TreeSet msgList) { GlobalVariable.msgList = msgList; } -} + + public static Map getNewFriendsMap() { + return newFriendsMap; + } + + public static void setNewFriendsMap(Map newFriendsMap) { + GlobalVariable.newFriendsMap = newFriendsMap; + } + + public static Map getWitchForestMap() { + return witchForestMap; + } + public static void setWitchForestMap(Map witchForestMap) { + GlobalVariable.witchForestMap = witchForestMap; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/domain/GroupMemberInfo.java b/src/main/java/com/badeling/msbot/domain/GroupMemberInfo.java new file mode 100644 index 0000000..e285890 --- /dev/null +++ b/src/main/java/com/badeling/msbot/domain/GroupMemberInfo.java @@ -0,0 +1,122 @@ +package com.badeling.msbot.domain; + +public class GroupMemberInfo { + Long group_id; + Long user_id; + String nickname; + String card; + String sex; + Long age; + String area; + Long join_time; + Long last_sent_time; + String level; + String role; + boolean unfriendly; + String title; + Long title_expire_time; + boolean card_changeable; + public GroupMemberInfo(){ + + } + @Override + public String toString() { + return "GroupMemberInfo [group_id=" + group_id + ", user_id=" + user_id + ", nickname=" + nickname + ", card=" + + card + ", sex=" + sex + ", age=" + age + ", area=" + area + ", join_time=" + join_time + + ", last_sent_time=" + last_sent_time + ", level=" + level + ", role=" + role + ", unfriendly=" + + unfriendly + ", title=" + title + ", title_expire_time=" + title_expire_time + ", card_changeable=" + + card_changeable + "]"; + } + public Long getGroup_id() { + return group_id; + } + public void setGroup_id(Long group_id) { + this.group_id = group_id; + } + public Long getUser_id() { + return user_id; + } + public void setUser_id(Long user_id) { + this.user_id = user_id; + } + public String getNickname() { + return nickname; + } + public void setNickname(String nickname) { + this.nickname = nickname; + } + public String getCard() { + return card; + } + public void setCard(String card) { + this.card = card; + } + public String getSex() { + return sex; + } + public void setSex(String sex) { + this.sex = sex; + } + public Long getAge() { + return age; + } + public void setAge(Long age) { + this.age = age; + } + public String getArea() { + return area; + } + public void setArea(String area) { + this.area = area; + } + public Long getJoin_time() { + return join_time; + } + public void setJoin_time(Long join_time) { + this.join_time = join_time; + } + public Long getLast_sent_time() { + return last_sent_time; + } + public void setLast_sent_time(Long last_sent_time) { + this.last_sent_time = last_sent_time; + } + public String getLevel() { + return level; + } + public void setLevel(String level) { + this.level = level; + } + public String getRole() { + return role; + } + public void setRole(String role) { + this.role = role; + } + public boolean isUnfriendly() { + return unfriendly; + } + public void setUnfriendly(boolean unfriendly) { + this.unfriendly = unfriendly; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public Long getTitle_expire_time() { + return title_expire_time; + } + public void setTitle_expire_time(Long title_expire_time) { + this.title_expire_time = title_expire_time; + } + public boolean isCard_changeable() { + return card_changeable; + } + public void setCard_changeable(boolean card_changeable) { + this.card_changeable = card_changeable; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/domain/NoticeMsg.java b/src/main/java/com/badeling/msbot/domain/NoticeMsg.java index bb2afdf..80e3a23 100644 --- a/src/main/java/com/badeling/msbot/domain/NoticeMsg.java +++ b/src/main/java/com/badeling/msbot/domain/NoticeMsg.java @@ -1,7 +1,7 @@ package com.badeling.msbot.domain; public class NoticeMsg { -//{"post_type":"notice","notice_type":"group_increase"} + //{"post_type":"notice","notice_type":"group_increase"} String type; String self_id; String sub_type; @@ -12,17 +12,13 @@ public class NoticeMsg { String post_type; String notice_type; String duration; + String card_new; + String card_old; + public NoticeMsg() { - - } - - @Override - public String toString() { - return "NoticeMsg [type=" + type + ", self_id=" + self_id + ", sub_type=" + sub_type + ", group_id=" + group_id - + ", operator_id=" + operator_id + ", user_id=" + user_id + ", time=" + time + ", post_type=" - + post_type + ", notice_type=" + notice_type + "]"; + } - + public String getDuration() { return duration; } @@ -85,6 +81,17 @@ public String getNotice_type() { public void setNotice_type(String notice_type) { this.notice_type = notice_type; } - - + public String getCard_new() { + return card_new; + } + public void setCard_new(String card_new) { + this.card_new = card_new; + } + public String getCard_old() { + return card_old; + } + public void setCard_old(String card_old) { + this.card_old = card_old; + } + } diff --git a/src/main/java/com/badeling/msbot/domain/ThrowGroupLeader.java b/src/main/java/com/badeling/msbot/domain/ThrowGroupLeader.java new file mode 100644 index 0000000..a1d6726 --- /dev/null +++ b/src/main/java/com/badeling/msbot/domain/ThrowGroupLeader.java @@ -0,0 +1,15 @@ +package com.badeling.msbot.domain; + +public class ThrowGroupLeader { + public Long dateTime; + public ThrowGroupLeader() { + + } + + public Long getDateTime() { + return dateTime; + } + public void setDateTime(Long dateTime) { + this.dateTime = dateTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/Friends.java b/src/main/java/com/badeling/msbot/entity/Friends.java deleted file mode 100644 index 709a336..0000000 --- a/src/main/java/com/badeling/msbot/entity/Friends.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.badeling.msbot.entity; - -import javax.persistence.Entity; -import javax.persistence.Id; - -@Entity -public class Friends { - @Id - private String id; - private String name; - private String atr; - private String star; - private String starBlank; - - public Friends() { - - } - - public Friends(String id, String name, String atr, String star, String starBlank) { - super(); - this.id = id; - this.name = name; - this.atr = atr; - this.star = star; - this.starBlank = starBlank; - } - - @Override - public String toString() { - return "Friends [id=" + id + ", name=" + name + ", atr=" + atr + ", star=" + star + ", starBlank=" + starBlank - + "]"; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAtr() { - return atr; - } - - public void setAtr(String atr) { - this.atr = atr; - } - - public String getStar() { - return star; - } - - public void setStar(String star) { - this.star = star; - } - - public String getStarBlank() { - return starBlank; - } - - public void setStarBlank(String starBlank) { - this.starBlank = starBlank; - } - - - - - - - -} diff --git a/src/main/java/com/badeling/msbot/entity/GroupInfo.java b/src/main/java/com/badeling/msbot/entity/GroupInfo.java new file mode 100644 index 0000000..95fc907 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/GroupInfo.java @@ -0,0 +1,69 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class GroupInfo { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + //群号 + private String group_id; + //群名称 + private String group_name; + //群备注 + private String group_memo; + //迎新语句 + private String welcome; + public GroupInfo() { + + } + public GroupInfo(Long id, String group_id, String group_name, String group_memo, String welcome) { + super(); + this.id = id; + this.group_id = group_id; + this.group_name = group_name; + this.group_memo = group_memo; + this.welcome = welcome; + } + @Override + public String toString() { + return "GroupInfo [id=" + id + ", group_id=" + group_id + ", group_name=" + group_name + ", group_memo=" + + group_memo + ", welcome=" + welcome + "]"; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getGroup_id() { + return group_id; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + public String getGroup_name() { + return group_name; + } + public void setGroup_name(String group_name) { + this.group_name = group_name; + } + public String getGroup_memo() { + return group_memo; + } + public void setGroup_memo(String group_memo) { + this.group_memo = group_memo; + } + public String getWelcome() { + return welcome; + } + public void setWelcome(String welcome) { + this.welcome = welcome; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/GroupMember.java b/src/main/java/com/badeling/msbot/entity/GroupMember.java new file mode 100644 index 0000000..d324f83 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/GroupMember.java @@ -0,0 +1,77 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +@Entity +public class GroupMember { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String group_id; + private String user_id; + private String nickname; + private String card; + private String join_time; + private String leave_time; + + public GroupMember() { + + } + + + + @Override + public String toString() { + return "GroupMember [group_id=" + group_id + ", user_id=" + user_id + ", nickname=" + nickname + ", card=" + + card + ", join_time=" + join_time + ", leave_time=" + leave_time + "]"; + } + + + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getGroup_id() { + return group_id; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + public String getUser_id() { + return user_id; + } + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public String getNickname() { + return nickname; + } + public void setNickname(String nickname) { + this.nickname = nickname; + } + public String getCard() { + return card; + } + public void setCard(String card) { + this.card = card; + } + public String getJoin_time() { + return join_time; + } + public void setJoin_time(String join_time) { + this.join_time = join_time; + } + public String getLeave_time() { + return leave_time; + } + public void setLeave_time(String leave_time) { + this.leave_time = leave_time; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/Message.java b/src/main/java/com/badeling/msbot/entity/Message.java new file mode 100644 index 0000000..2c5a159 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/Message.java @@ -0,0 +1,54 @@ +package com.badeling.msbot.entity; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Message { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String user_id; + private String group_id; + @Column(name="raw_message",columnDefinition="VARCHAR(5000)") + private String raw_message; + private Long time; + public Message() { + + } + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getUser_id() { + return user_id; + } + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public String getGroup_id() { + return group_id; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + public String getRaw_message() { + return raw_message; + } + public void setRaw_message(String raw_message) { + this.raw_message = raw_message; + } + + public Long getTime() { + return time; + } + + public void setTime(Long time) { + this.time = time; + } +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/MobInfo.java b/src/main/java/com/badeling/msbot/entity/MobInfo.java index c96ba87..5ae0b01 100644 --- a/src/main/java/com/badeling/msbot/entity/MobInfo.java +++ b/src/main/java/com/badeling/msbot/entity/MobInfo.java @@ -7,195 +7,195 @@ @Entity public class MobInfo { - @Id - @GeneratedValue(strategy=GenerationType.IDENTITY) - private Long id; - private String mobId; - private String level; - private String maxHp; - private String maxMp; - private String speed; - private String paDamage; - private String maDamage; - private String pdRate; - private String mdRate; - private String acc; - private String eva; - private String pushed; - private String fs; - private String exp; - private String summerType; - private String category; - private String elemAttr; - private String mobType; - private String boss; - private String link; - - @Override - public String toString() { - return "MobInfo [id=" + id + ", mobId=" + mobId + ", level=" + level + ", maxHp=" + maxHp + ", maxMp=" + maxMp - + ", speed=" + speed + ", paDamage=" + paDamage + ", maDamage=" + maDamage + ", pdRate=" + pdRate - + ", mdRate=" + mdRate + ", acc=" + acc + ", eva=" + eva + ", pushed=" + pushed + ", fs=" + fs - + ", exp=" + exp + ", summerType=" + summerType + ", category=" + category + ", elemAttr=" + elemAttr - + ", mobType=" + mobType + ", boss=" + boss + ", link=" + link + "]"; - } - public MobInfo() { - - } - public MobInfo(Long id, String mobId, String level, String maxHp, String maxMp, String speed, String paDamage, - String maDamage, String pdRate, String mdRate, String acc, String eva, String pushed, String fs, String exp, - String summerType, String category, String elemAttr, String mobType, String boss, String link) { - super(); - this.id = id; - this.mobId = mobId; - this.level = level; - this.maxHp = maxHp; - this.maxMp = maxMp; - this.speed = speed; - this.paDamage = paDamage; - this.maDamage = maDamage; - this.pdRate = pdRate; - this.mdRate = mdRate; - this.acc = acc; - this.eva = eva; - this.pushed = pushed; - this.fs = fs; - this.exp = exp; - this.summerType = summerType; - this.category = category; - this.elemAttr = elemAttr; - this.mobType = mobType; - this.boss = boss; - this.link = link; - } - public Long getId() { - return id; - } - public void setId(Long id) { - this.id = id; - } - public String getMobId() { - return mobId; - } - public void setMobId(String mobId) { - this.mobId = mobId; - } - public String getLevel() { - return level; - } - public void setLevel(String level) { - this.level = level; - } - public String getMaxHp() { - return maxHp; - } - public void setMaxHp(String maxHp) { - this.maxHp = maxHp; - } - public String getMaxMp() { - return maxMp; - } - public void setMaxMp(String maxMp) { - this.maxMp = maxMp; - } - public String getSpeed() { - return speed; - } - public void setSpeed(String speed) { - this.speed = speed; - } - public String getPaDamage() { - return paDamage; - } - public void setPaDamage(String paDamage) { - this.paDamage = paDamage; - } - public String getMaDamage() { - return maDamage; - } - public void setMaDamage(String maDamage) { - this.maDamage = maDamage; - } - public String getPdRate() { - return pdRate; - } - public void setPdRate(String pdRate) { - this.pdRate = pdRate; - } - public String getMdRate() { - return mdRate; - } - public void setMdRate(String mdRate) { - this.mdRate = mdRate; - } - public String getAcc() { - return acc; - } - public void setAcc(String acc) { - this.acc = acc; - } - public String getEva() { - return eva; - } - public void setEva(String eva) { - this.eva = eva; - } - public String getPushed() { - return pushed; - } - public void setPushed(String pushed) { - this.pushed = pushed; - } - public String getFs() { - return fs; - } - public void setFs(String fs) { - this.fs = fs; - } - public String getExp() { - return exp; - } - public void setExp(String exp) { - this.exp = exp; - } - public String getSummerType() { - return summerType; - } - public void setSummerType(String summerType) { - this.summerType = summerType; - } - public String getCategory() { - return category; - } - public void setCategory(String category) { - this.category = category; - } - public String getElemAttr() { - return elemAttr; - } - public void setElemAttr(String elemAttr) { - this.elemAttr = elemAttr; - } - public String getMobType() { - return mobType; - } - public void setMobType(String mobType) { - this.mobType = mobType; - } - public String getBoss() { - return boss; - } - public void setBoss(String boss) { - this.boss = boss; - } - public String getLink() { - return link; - } - public void setLink(String link) { - this.link = link; - } - - - - -} + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String mobId; + private String level; + private String maxHp; + private String maxMp; + private String speed; + private String paDamage; + private String maDamage; + private String pdRate; + private String mdRate; + private String acc; + private String eva; + private String pushed; + private String fs; + private String exp; + private String summerType; + private String category; + private String elemAttr; + private String mobType; + private String boss; + private String link; + + @Override + public String toString() { + return "MobInfo [id=" + id + ", mobId=" + mobId + ", level=" + level + ", maxHp=" + maxHp + ", maxMp=" + maxMp + + ", speed=" + speed + ", paDamage=" + paDamage + ", maDamage=" + maDamage + ", pdRate=" + pdRate + + ", mdRate=" + mdRate + ", acc=" + acc + ", eva=" + eva + ", pushed=" + pushed + ", fs=" + fs + + ", exp=" + exp + ", summerType=" + summerType + ", category=" + category + ", elemAttr=" + elemAttr + + ", mobType=" + mobType + ", boss=" + boss + ", link=" + link + "]"; + } + public MobInfo() { + + } + public MobInfo(Long id, String mobId, String level, String maxHp, String maxMp, String speed, String paDamage, + String maDamage, String pdRate, String mdRate, String acc, String eva, String pushed, String fs, String exp, + String summerType, String category, String elemAttr, String mobType, String boss, String link) { + super(); + this.id = id; + this.mobId = mobId; + this.level = level; + this.maxHp = maxHp; + this.maxMp = maxMp; + this.speed = speed; + this.paDamage = paDamage; + this.maDamage = maDamage; + this.pdRate = pdRate; + this.mdRate = mdRate; + this.acc = acc; + this.eva = eva; + this.pushed = pushed; + this.fs = fs; + this.exp = exp; + this.summerType = summerType; + this.category = category; + this.elemAttr = elemAttr; + this.mobType = mobType; + this.boss = boss; + this.link = link; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getMobId() { + return mobId; + } + public void setMobId(String mobId) { + this.mobId = mobId; + } + public String getLevel() { + return level; + } + public void setLevel(String level) { + this.level = level; + } + public String getMaxHp() { + return maxHp; + } + public void setMaxHp(String maxHp) { + this.maxHp = maxHp; + } + public String getMaxMp() { + return maxMp; + } + public void setMaxMp(String maxMp) { + this.maxMp = maxMp; + } + public String getSpeed() { + return speed; + } + public void setSpeed(String speed) { + this.speed = speed; + } + public String getPaDamage() { + return paDamage; + } + public void setPaDamage(String paDamage) { + this.paDamage = paDamage; + } + public String getMaDamage() { + return maDamage; + } + public void setMaDamage(String maDamage) { + this.maDamage = maDamage; + } + public String getPdRate() { + return pdRate; + } + public void setPdRate(String pdRate) { + this.pdRate = pdRate; + } + public String getMdRate() { + return mdRate; + } + public void setMdRate(String mdRate) { + this.mdRate = mdRate; + } + public String getAcc() { + return acc; + } + public void setAcc(String acc) { + this.acc = acc; + } + public String getEva() { + return eva; + } + public void setEva(String eva) { + this.eva = eva; + } + public String getPushed() { + return pushed; + } + public void setPushed(String pushed) { + this.pushed = pushed; + } + public String getFs() { + return fs; + } + public void setFs(String fs) { + this.fs = fs; + } + public String getExp() { + return exp; + } + public void setExp(String exp) { + this.exp = exp; + } + public String getSummerType() { + return summerType; + } + public void setSummerType(String summerType) { + this.summerType = summerType; + } + public String getCategory() { + return category; + } + public void setCategory(String category) { + this.category = category; + } + public String getElemAttr() { + return elemAttr; + } + public void setElemAttr(String elemAttr) { + this.elemAttr = elemAttr; + } + public String getMobType() { + return mobType; + } + public void setMobType(String mobType) { + this.mobType = mobType; + } + public String getBoss() { + return boss; + } + public void setBoss(String boss) { + this.boss = boss; + } + public String getLink() { + return link; + } + public void setLink(String link) { + this.link = link; + } + + + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/MobName.java b/src/main/java/com/badeling/msbot/entity/MobName.java index d416b80..18002c5 100644 --- a/src/main/java/com/badeling/msbot/entity/MobName.java +++ b/src/main/java/com/badeling/msbot/entity/MobName.java @@ -7,44 +7,44 @@ @Entity public class MobName { - @Id - @GeneratedValue(strategy=GenerationType.IDENTITY) - private Long id; - private String mobId; - private String name; - public MobName() { - } - public MobName(Long id, String mobId, String name) { - super(); - this.id = id; - this.mobId = mobId; - this.name = name; - } - - - @Override - public String toString() { - return "MobName [id=" + id + ", mobId=" + mobId + ", name=" + name + "]"; - } - public Long getId() { - return id; - } - public void setId(Long id) { - this.id = id; - } - public String getMobId() { - return mobId; - } - public void setMobId(String mobId) { - this.mobId = mobId; - } - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - - - -} + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String mobId; + private String name; + public MobName() { + } + public MobName(Long id, String mobId, String name) { + super(); + this.id = id; + this.mobId = mobId; + this.name = name; + } + + + @Override + public String toString() { + return "MobName [id=" + id + ", mobId=" + mobId + ", name=" + name + "]"; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getMobId() { + return mobId; + } + public void setMobId(String mobId) { + this.mobId = mobId; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/Msg.java b/src/main/java/com/badeling/msbot/entity/Msg.java index 90bfc42..0404861 100644 --- a/src/main/java/com/badeling/msbot/entity/Msg.java +++ b/src/main/java/com/badeling/msbot/entity/Msg.java @@ -1,5 +1,6 @@ package com.badeling.msbot.entity; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -11,13 +12,15 @@ public class Msg { @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String question; + @Column(name="answer",columnDefinition="VARCHAR(1275)") private String answer; private String createId; + @Column(name="link",columnDefinition="VARCHAR(1275)") private String link; public Msg() { - + } - + public Msg(Long id, String question, String answer, String createId, String link) { super(); this.id = id; @@ -26,7 +29,7 @@ public Msg(Long id, String question, String answer, String createId, String link this.createId = createId; this.link = link; } - + public String getCreateId() { return createId; } @@ -61,8 +64,6 @@ public String getAnswer() { public void setAnswer(String answer) { this.answer = answer; } - - - - -} + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/Score.java b/src/main/java/com/badeling/msbot/entity/Score.java new file mode 100644 index 0000000..d7eaa98 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/Score.java @@ -0,0 +1,50 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Score { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String user_id; + private String group_id; + private Integer time; + private Integer score; + public Score() { + + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getUser_id() { + return user_id; + } + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public String getGroup_id() { + return group_id; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + public Integer getTime() { + return time; + } + public void setTime(Integer time) { + this.time = time; + } + public Integer getScore() { + return score; + } + public void setScore(Integer score) { + this.score = score; + } +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/entity/SellAndBuy.java b/src/main/java/com/badeling/msbot/entity/SellAndBuy.java new file mode 100644 index 0000000..a772973 --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/SellAndBuy.java @@ -0,0 +1,74 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class SellAndBuy { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + //group id + private String group_id; + //buy or sell + private String type; + //buyer or seller + private String user_id; + private String user_name; + private String goods; + private String time; + public SellAndBuy() { + + } + + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getGroup_id() { + return group_id; + } + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getUser_id() { + return user_id; + } + public void setUser_id(String user_id) { + this.user_id = user_id; + } + public String getGoods() { + return goods; + } + public void setGoods(String goods) { + this.goods = goods; + } + public String getTime() { + return time; + } + public void setTime(String time) { + this.time = time; + } + + + public String getUser_name() { + return user_name; + } + + + public void setUser_name(String user_name) { + this.user_name = user_name; + } + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/FriendsRepository.java b/src/main/java/com/badeling/msbot/repository/FriendsRepository.java deleted file mode 100644 index 0f0188c..0000000 --- a/src/main/java/com/badeling/msbot/repository/FriendsRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.badeling.msbot.repository; - -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.CrudRepository; - -import com.badeling.msbot.entity.Friends; - -public interface FriendsRepository extends CrudRepository{ - - - @Query(value = "select * from friends where id = ?1",nativeQuery=true) - Friends findFriendsById(String id); - - @Query(value = "select count(star) FROM coolq.friends where star=?1 and id<2000",nativeQuery=true) - String getFriendsNum(String string); - - @Query(value = "select count(star) FROM coolq.friends where star=?1 and id>=2000",nativeQuery=true) - String getPhotoNum(String string); - - @Query(value = "select * FROM friends where star=?1 limit ?2,1",nativeQuery=true) - Friends findFriendsByStar(String string,int ram); - - @Query(value = "select * FROM friends where star=?1 and id>=2000 limit ?2,1",nativeQuery=true) - Friends findPhotoByStar(String string,int ram); - - -} diff --git a/src/main/java/com/badeling/msbot/repository/GroupInfoRepository.java b/src/main/java/com/badeling/msbot/repository/GroupInfoRepository.java new file mode 100644 index 0000000..064299d --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/GroupInfoRepository.java @@ -0,0 +1,13 @@ +package com.badeling.msbot.repository; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; + +import com.badeling.msbot.entity.GroupInfo; + +public interface GroupInfoRepository extends CrudRepository{ + @Query(value = "select * from group_info where group_id = ?1",nativeQuery=true) + GroupInfo findByGroupId(String group_id); + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/GroupMemberRepository.java b/src/main/java/com/badeling/msbot/repository/GroupMemberRepository.java new file mode 100644 index 0000000..0144124 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/GroupMemberRepository.java @@ -0,0 +1,30 @@ +package com.badeling.msbot.repository; + +import com.badeling.msbot.entity.GroupMember; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public interface GroupMemberRepository extends CrudRepository{ + @Query(value = "select * from group_member where group_id = ?1",nativeQuery=true) + List findGroupMemberByGroup(String group_id); + + @Query(value = "select * from group_member where group_id = ?1 and user_id = ?2",nativeQuery=true) + List findGroupMemberInfo(String group_id,String user_id); + + @Query(value = "select * from group_member where group_id = ?1 and leave_time >= ?2",nativeQuery=true) + List findLeaveMemberInfo(String group_id,Integer leave_time); + + @Modifying + @Transactional + @Query(value = "update group_member set nickname = ?2,card = ?3,join_time = ?4 where id = ?1",nativeQuery=true) + void modifyMemberInfo(Long id,String nickname,String card,String join_time); + + @Modifying + @Transactional + @Query(value = "update group_member set leave_time = ?2 where id = ?1",nativeQuery=true) + void modifyMemberLeaveTime(Long id,String leaveTime); +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/MessageRepository.java b/src/main/java/com/badeling/msbot/repository/MessageRepository.java new file mode 100644 index 0000000..b8197c5 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/MessageRepository.java @@ -0,0 +1,36 @@ +package com.badeling.msbot.repository; + +import com.badeling.msbot.entity.Message; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public interface MessageRepository extends CrudRepository{ + @Query(value = "select group_id,count(id) from message group by group_id order by count(id) desc",nativeQuery=true) + List groupCount(); + + @Query(value = "select group_id,count(id) from message where user_id = ?1 group by group_id order by count(id) desc",nativeQuery=true) + List userCount(String user_id); + + @Query(value = "select count(*) from message",nativeQuery=true) + Integer getCount(); + @Query(value = "select * from message limit ?1,1",nativeQuery=true) + Message getMsgByrank(int rank); + + @Modifying + @Transactional + @Query(value = "delete from message where id < ?1",nativeQuery=true) + void deleteByrank(Long id); + + @Query(value = "select count(*) from message where user_id = ?1 and group_id = ?2 and raw_message not like '蠢猫%'",nativeQuery=true) + Integer getCountByGroup(String user_id,String group_id); + + @Query(value = "select * from message where time < ?1",nativeQuery=true) + List findMsgByTime(long time); + + @Query(value = "select * from message",nativeQuery=true) + List findAllMsg(); +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/MobInfoRepository.java b/src/main/java/com/badeling/msbot/repository/MobInfoRepository.java index a3f7054..3f5038e 100644 --- a/src/main/java/com/badeling/msbot/repository/MobInfoRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MobInfoRepository.java @@ -8,16 +8,16 @@ import com.badeling.msbot.entity.MobInfo; public interface MobInfoRepository extends CrudRepository{ - @Query(value = "select * from mob_info where mob_id = ?1",nativeQuery=true) - MobInfo findMobInfoByMobId(String mobId); - - @Modifying - @Transactional - @Query(value = "update mob_info set boss = ?2 WHERE (mob_id = ?1);",nativeQuery=true) - void modifyBoss(String mob_id,String boss); - - @Modifying - @Transactional - @Query(value = "update mob_info set link = ?2 WHERE (mob_id = ?1);",nativeQuery=true) - void modifyLink(String mob_id,String link); -} + @Query(value = "select * from mob_info where mob_id = ?1",nativeQuery=true) + MobInfo findMobInfoByMobId(String mobId); + + @Modifying + @Transactional + @Query(value = "update mob_info set boss = ?2 WHERE (mob_id = ?1);",nativeQuery=true) + void modifyBoss(String mob_id,String boss); + + @Modifying + @Transactional + @Query(value = "update mob_info set link = ?2 WHERE (mob_id = ?1);",nativeQuery=true) + void modifyLink(String mob_id,String link); +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/MobNameRepository.java b/src/main/java/com/badeling/msbot/repository/MobNameRepository.java index 246ec3c..0290d22 100644 --- a/src/main/java/com/badeling/msbot/repository/MobNameRepository.java +++ b/src/main/java/com/badeling/msbot/repository/MobNameRepository.java @@ -10,22 +10,22 @@ import com.badeling.msbot.entity.MobName; public interface MobNameRepository extends CrudRepository{ - @Query(value = "select * from mob_name where name = ?1 order by mob_id",nativeQuery=true) - List findByName(String mobName); - @Query(value = "select * from mob_name where name like %?1% order by mob_id",nativeQuery=true) - List findByNameLike(String mobNames); - - @Query(value = "select * from mob_name",nativeQuery=true) - List findAllmobName(); - - @Modifying - @Transactional - @Query(value = "update mob_name set mob_id = ?2, name = ?3 WHERE (id = ?1);",nativeQuery=true) - void modifyName(Long id,String mob_id,String name); - - @Query(value = "select * from mob_name where mob_id = ?1",nativeQuery=true) - MobName findByMobId(Long mob_id); - - - -} + @Query(value = "select * from mob_name where name = ?1 order by mob_id",nativeQuery=true) + List findByName(String mobName); + @Query(value = "select * from mob_name where name like %?1% order by mob_id",nativeQuery=true) + List findByNameLike(String mobNames); + + @Query(value = "select * from mob_name",nativeQuery=true) + List findAllmobName(); + + @Modifying + @Transactional + @Query(value = "update mob_name set mob_id = ?2, name = ?3 WHERE (id = ?1);",nativeQuery=true) + void modifyName(Long id,String mob_id,String name); + + @Query(value = "select * from mob_name where mob_id = ?1",nativeQuery=true) + MobName findByMobId(Long mob_id); + + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/ScoreRepository.java b/src/main/java/com/badeling/msbot/repository/ScoreRepository.java new file mode 100644 index 0000000..ef20607 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/ScoreRepository.java @@ -0,0 +1,37 @@ +package com.badeling.msbot.repository; + +import com.badeling.msbot.entity.Score; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; + +import java.util.List; + +public interface ScoreRepository extends CrudRepository{ + @Query(value = "select * from score where user_id = ?1 and group_id = ?2 and time = ?3",nativeQuery=true) + List findScoreById(String user_id,String group_id,int time); + + @Query(value = "select * from score where user_id = ?1 and group_id = ?2",nativeQuery=true) + List findScoreById(String user_id,String group_id); + + @Query(value = "select * from score where user_id = ?1",nativeQuery=true) + List findScoreById(String user_id); + + @Query(value = "select group_id,sum(score) from score where user_id = ?1 group by group_id",nativeQuery=true) + List getUserScoreById(String findNumber); + + @Query(value = "select group_id,sum(score) from score group by group_id",nativeQuery=true) + List getAllGroupScore(); + + @Query(value = "select group_id,user_id,sum(score) from score where time <= ?1 or time >= ?2 group by group_id,user_id",nativeQuery=true) + List findLastWeekScore(String time1,String time2); + + @Query(value = "select * from score where time <= ?1 or time >= ?2",nativeQuery=true) + List findLastWeekScore2(String time1,String time2); + + @Query(value = "select user_id,sum(score) from score where group_id = ?1 group by user_id order by sum(score) desc",nativeQuery=true) + List getRankingList(String group_id); + + @Query(value = "select sum(score) from msbot.score where user_id = ?1 and group_id = ?2",nativeQuery=true) + Integer getUserTotalScore(String user_id,String group_id); + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/SellAndBuyRepository.java b/src/main/java/com/badeling/msbot/repository/SellAndBuyRepository.java new file mode 100644 index 0000000..7572832 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/SellAndBuyRepository.java @@ -0,0 +1,20 @@ +package com.badeling.msbot.repository; + +import com.badeling.msbot.entity.SellAndBuy; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; + +import java.util.List; + +public interface SellAndBuyRepository extends CrudRepository{ + @Query(value = "select * from sell_and_buy where user_id = ?1 and type = ?2",nativeQuery=true) + SellAndBuy findUserByIdAndType(String user_id,String type); + + @Query(value = "select * from sell_and_buy where type = ?1 order by time desc",nativeQuery=true) + List findSabByType(String type); + + @Query(value = "select * from sell_and_buy where time < ?1",nativeQuery=true) + List findSabByTime(String time); + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/service/DrawService.java b/src/main/java/com/badeling/msbot/service/DrawService.java index efeb0b4..7fb1449 100644 --- a/src/main/java/com/badeling/msbot/service/DrawService.java +++ b/src/main/java/com/badeling/msbot/service/DrawService.java @@ -5,27 +5,20 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; @Service public interface DrawService { - String updateFriends(); - - String updatePhoto(); - - String startDraw() throws Exception; - String startDrawMs() throws Exception; String startDrawMs(MonvTime monvTime) throws Exception; - String kemomimiDraw() throws Exception; String kemomimiDraw2(List pick) throws Exception; - String throwSomeone(String headImg) throws Exception; String pouchSomeone(String saveTempImage) throws Exception; @@ -35,4 +28,8 @@ public interface DrawService { String ignImage(String ignDate) throws Exception; String zbImage(String[] msg) throws Exception; + + String drawRankImage(Map mapler) throws Exception; + + String getRankList(List richList, List poorList) throws Exception; } diff --git a/src/main/java/com/badeling/msbot/service/GroupMsgService.java b/src/main/java/com/badeling/msbot/service/GroupMsgService.java index 0c821f8..895e4ff 100644 --- a/src/main/java/com/badeling/msbot/service/GroupMsgService.java +++ b/src/main/java/com/badeling/msbot/service/GroupMsgService.java @@ -1,26 +1,26 @@ package com.badeling.msbot.service; -import java.util.HashMap; - -import org.springframework.stereotype.Service; - import com.badeling.msbot.domain.ChannelReplyMsg; import com.badeling.msbot.domain.GroupMsg; -import com.badeling.msbot.domain.NoticeMsg; import com.badeling.msbot.domain.PrivateMsg; import com.badeling.msbot.domain.Result; +import org.springframework.stereotype.Service; + +import java.util.HashMap; @Service public interface GroupMsgService { - + Result sendPrivateMsg(PrivateMsg privateMsg); Result sendGroupMsg(GroupMsg groupMsg); - + Result sendChannelMsg(ChannelReplyMsg channelReplyMsg); - + + Result getGroupList(); + Result getGroupMember(GroupMsg groupMsg); Result deleteMsg(HashMap map); @@ -30,4 +30,5 @@ public interface GroupMsgService { String MoliMsg(String content, String user_id, String name); String MoliMsg2(String content, String user_id, String name); -} + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/service/WzXmlService.java b/src/main/java/com/badeling/msbot/service/WzXmlService.java index 98dab91..042f83e 100644 --- a/src/main/java/com/badeling/msbot/service/WzXmlService.java +++ b/src/main/java/com/badeling/msbot/service/WzXmlService.java @@ -5,15 +5,15 @@ @Service public interface WzXmlService { - void updateMobInfo(); - - String searchMob(String raw_message, String group_id, String user_id); + void updateMobInfo(); - String searchMob(Long mob_id, String group_id); - - String searchMobForChannel(Long mob_id, Long channel_id, Long guild_id); + String searchMob(String raw_message, String group_id, String user_id); - String searchMobForChannel(String raw_message, Long channel_id, Long guild_id); + String searchMob(Long mob_id, String group_id); + String searchMobForChannel(Long mob_id, Long channel_id, Long guild_id); -} + String searchMobForChannel(String raw_message, Long channel_id, Long guild_id); + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ChannelOfficialServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ChannelOfficialServiceImpl.java index 0e9e0cd..3222dad 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/ChannelOfficialServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/ChannelOfficialServiceImpl.java @@ -1,163 +1,144 @@ package com.badeling.msbot.serviceImpl; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.TreeSet; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.MsgZbCalculate; -import com.badeling.msbot.domain.ChannelMsg; -import com.badeling.msbot.domain.ChannelReplyMsg; import com.badeling.msbot.domain.GlobalVariable; import com.badeling.msbot.domain.ReplyMsg; import com.badeling.msbot.entity.Msg; import com.badeling.msbot.entity.RoleDmg; import com.badeling.msbot.repository.MsgRepository; import com.badeling.msbot.repository.RoleDmgRepository; -import com.badeling.msbot.service.ChannelOfficialService; -import com.badeling.msbot.service.DrawService; -import com.badeling.msbot.service.GroupMsgService; -import com.badeling.msbot.service.MvpImageService; -import com.badeling.msbot.service.RankService; -import com.badeling.msbot.service.WzXmlService; +import com.badeling.msbot.service.*; import com.badeling.msbot.util.CosSdk; import com.badeling.msbot.util.Loadfont2; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import java.text.SimpleDateFormat; +import java.util.*; @Component public class ChannelOfficialServiceImpl implements ChannelOfficialService{ - + @Autowired MsgRepository msgRepository; - + @Autowired RoleDmgRepository roleDmgRepository; - + @Autowired DrawService drawService; - + @Autowired MvpImageService mvpImageService; - + @Autowired MsgZbCalculate msgZbCalculate; - - @Autowired - WzXmlService wzXmlService; - + + @Autowired RankService rankService; - + @Autowired GroupMsgService groupMsgService; - + public static void main(String[] args) { - + } - + + @SuppressWarnings("unused") @Override public String receive(String msg) { Map map = (Map)JSON.parseObject(msg); - + String message = map.get("message")+""; - + while(!message.isEmpty()&&(message.startsWith(" ")||message.startsWith("/"))) { message = message.substring(1); } - + while(!message.isEmpty()&&message.endsWith(" ")) { message = message.substring(0,message.length()-1); } - - String raw_message = MsbotConst.channelBotName + message; - String channel_id = map.get("channel_id")+""; - String user_id = map.get("user_id")+""; - String user_name = map.get("user_name")+""; - String guild_id = map.get("guild_id")+""; - - if(guild_id.equals("2345324182645790134")&&!channel_id.equals("2105717")) { - return null; - } - + + String raw_message = MsbotConst.channelBotName + message; + String channel_id = map.get("channel_id")+""; + String user_id = map.get("user_id")+""; + String user_name = map.get("user_name")+""; + String guild_id = map.get("guild_id")+""; + + if(guild_id.equals("2345324182645790134")&&!channel_id.equals("2105717")) { + return null; + } + // String message_id = map.get("message_id")+""; - //判定是否有重复请求 - TreeSet msgList = GlobalVariable.getMsgList(); - if(msgList.contains(msg)) { - return null; - } - if(msgList.size()>128) { - for(int i=0;i<16;i++) { - Iterator iterator = msgList.iterator(); - msgList.remove(iterator.next()); - } - } - msgList.add(msg); - GlobalVariable.setMsgList(msgList); - - ReplyMsg result = handleNameMsg(raw_message,channel_id,user_id,user_name); - //at信息 - if(result.isAt_sender()) { - String atMsg = "<@!" + user_id + ">"; - result.setReply(atMsg + " "+result.getReply()); - } - - if(result!=null) { - Map replyMsg = new HashMap(); - replyMsg.put("channelId", channel_id); - - if(result.getReply().contains(MsbotConst.botName)) { - result.setReply(result.getReply().replaceAll(MsbotConst.botName, MsbotConst.channelBotName)); - } - - if(!result.getReply().contains("CQ:image,file")) { - replyMsg.put("content", result.getReply()); - return JSON.toJSONString(replyMsg); - } - - String[] shortMessage = result.getReply().split("\\[CQ:image,file="); + //判定是否有重复请求 + TreeSet msgList = GlobalVariable.getMsgList(); + if(msgList.contains(msg)) { + return null; + } + if(msgList.size()>128) { + for(int i=0;i<16;i++) { + Iterator iterator = msgList.iterator(); + msgList.remove(iterator.next()); + } + } + msgList.add(msg); + GlobalVariable.setMsgList(msgList); + + ReplyMsg result = handleNameMsg(raw_message,channel_id,user_id,user_name); + //at信息 + if(result.isAt_sender()) { + String atMsg = "<@!" + user_id + ">"; + result.setReply(atMsg + " "+result.getReply()); + } + + if(result!=null) { + Map replyMsg = new HashMap(); + replyMsg.put("channelId", channel_id); + + if(result.getReply().contains(MsbotConst.botName)) { + result.setReply(result.getReply().replaceAll(MsbotConst.botName, MsbotConst.channelBotName)); + } + + if(!result.getReply().contains("CQ:image,file")) { + replyMsg.put("content", result.getReply()); + return JSON.toJSONString(replyMsg); + } + + String[] shortMessage = result.getReply().split("\\[CQ:image,file="); String resultMsg = ""; - for(int i=0;i0&&indexOf!=-1) { - if(i==1) { - String imageName = shortMessage[i].substring(0,indexOf).replaceAll("\\\\", "/"); - String uploadFile = CosSdk.uploadFile(MsbotConst.imageUrl+imageName); - String imageUrl = "https://image.badeling.com/"+uploadFile; - replyMsg.put("image", imageUrl); - } + for(int i=0;i0&&indexOf!=-1) { + if(i==1) { + String imageName = shortMessage[i].substring(0,indexOf).replaceAll("\\\\", "/"); + String uploadFile = CosSdk.uploadFile(MsbotConst.imageUrl+imageName); + String imageUrl = "https://image.badeling.com/"+uploadFile; + replyMsg.put("image", imageUrl); + } // resultMsg += "\"\""; - resultMsg += shortMessage[i].substring(indexOf+1); - }else { - resultMsg += shortMessage[i]; - } - } - - if(!resultMsg.equals("")) { - replyMsg.put("content", resultMsg); - } - return JSON.toJSONString(replyMsg); - } - + resultMsg += shortMessage[i].substring(indexOf+1); + }else { + resultMsg += shortMessage[i]; + } + } + + if(!resultMsg.equals("")) { + replyMsg.put("content", resultMsg); + } + return JSON.toJSONString(replyMsg); + } + return null; } @@ -169,7 +150,7 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ //查询 Set set = msgRepository.findAllQuestion(); Iterator it = set.iterator(); - + //测试字体 if(raw_message.startsWith(MsbotConst.channelBotName+"测试字体")) { try { @@ -182,7 +163,7 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ return replyMsg; } } - + if(raw_message.startsWith(MsbotConst.channelBotName+"联盟")) { if(raw_message.equals(MsbotConst.channelBotName+"联盟")) { replyMsg.setReply("联盟后面跟上角色名就可以查询角色数据啦"); @@ -191,9 +172,9 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ replyMsg.setReply(rank); } return replyMsg; - + } - + //无视计算 if(raw_message.contains("无视")&&(raw_message.contains("+")||raw_message.contains("-"))) { try { @@ -203,13 +184,13 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ raw_message = raw_message.replace(" ", ""); raw_message = raw_message.replace("=", ""); raw_message = raw_message.replace("无视", ""); - double ign = 0; + double ign = 0; double ign_before = 0; double ign2 = 0; double ign_before2 = 0; //短消息回复 // String shortMsg = ""; - + if(raw_message.contains("+")&&!raw_message.contains("-")) { String[] getInt = raw_message.split("\\+"); for(int i=0;i0) { Elements elementsByTag = ele2.getElementsByTag("img"); for(Element temp : elementsByTag) { @@ -566,53 +546,53 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ return replyMsg; } } - + if(raw_message.startsWith(MsbotConst.channelBotName+"抽签")||raw_message.startsWith(MsbotConst.channelBotName+"运势")) { String reply = new String(); reply = msgZbCalculate.msgDeZb(user_id+""); replyMsg.setReply(reply); return replyMsg; } - + if(raw_message.contains("世界组队")) { String[] list = {"月妙","废都","艾琳森林","女神塔","沙漠","木之公园"}; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 使用默认时区和语言环境获得一个日历 - Calendar nowTime = Calendar.getInstance(); - Calendar beginTime = Calendar.getInstance(); - nowTime.set(Calendar.HOUR_OF_DAY, 0); - nowTime.set(Calendar.MINUTE, 0); - nowTime.set(Calendar.SECOND, 0); - beginTime.set(2021,4,12,0,0); - int count = 0; - //两周一循环 循环到本周 - while(nowTime.getTimeInMillis()-beginTime.getTimeInMillis()>1000*60*60*24*14) { - beginTime.add(Calendar.DAY_OF_MONTH, 14); - count = (count+1)%6; - } - //输出本周 以及 后五个周期 - StringBuffer message = new StringBuffer(); - message.append("世界组队时间表:"); - for(int i=0;i<6;i++) { - message.append("\r\n"); - message.append(sdf.format(beginTime.getTimeInMillis())).append(" "); - beginTime.add(Calendar.DAY_OF_MONTH, 13); - message.append(sdf.format(beginTime.getTimeInMillis())).append("\r\n");; - beginTime.add(Calendar.DAY_OF_MONTH, 1); - message.append(list[count]); - count = (count+1)%6; - } - replyMsg.setReply(message.toString()); - return replyMsg; - } - - + Calendar nowTime = Calendar.getInstance(); + Calendar beginTime = Calendar.getInstance(); + nowTime.set(Calendar.HOUR_OF_DAY, 0); + nowTime.set(Calendar.MINUTE, 0); + nowTime.set(Calendar.SECOND, 0); + beginTime.set(2021,4,12,0,0); + int count = 0; + //两周一循环 循环到本周 + while(nowTime.getTimeInMillis()-beginTime.getTimeInMillis()>1000*60*60*24*14) { + beginTime.add(Calendar.DAY_OF_MONTH, 14); + count = (count+1)%6; + } + //输出本周 以及 后五个周期 + StringBuffer message = new StringBuffer(); + message.append("世界组队时间表:"); + for(int i=0;i<6;i++) { + message.append("\r\n"); + message.append(sdf.format(beginTime.getTimeInMillis())).append(" "); + beginTime.add(Calendar.DAY_OF_MONTH, 13); + message.append(sdf.format(beginTime.getTimeInMillis())).append("\r\n");; + beginTime.add(Calendar.DAY_OF_MONTH, 1); + message.append(list[count]); + count = (count+1)%6; + } + replyMsg.setReply(message.toString()); + return replyMsg; + } + + if(raw_message.replace(" ", "").equals(MsbotConst.channelBotName)) { replyMsg.setAuto_escape(false); replyMsg.setReply("(ノ゚▽゚)ノ我在哦~"); return replyMsg; } - + if(raw_message.replaceAll(MsbotConst.channelBotName, "").replaceAll(" ","").equals("")) { raw_message = raw_message.replaceAll(" ",""); raw_message = raw_message.replaceFirst(MsbotConst.channelBotName, ""); @@ -645,11 +625,11 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ replyMsg.setReply("=.="); return replyMsg; } - + if(MsbotConst.moliKey!=null&&MsbotConst.moliSecret!=null&&!MsbotConst.moliKey.isEmpty()&&!MsbotConst.moliSecret.isEmpty()) { - + } - + if(raw_message.replaceAll(MsbotConst.channelBotName, "").replaceAll(" ","").replaceAll("?","").equals("")) { raw_message = MsbotConst.channelBotName+"固定回复问号"; } @@ -663,12 +643,11 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ replyMsg.setAt_sender(true); return replyMsg; } catch (Exception e) { - // TODO 自动生成的 catch 块 e.printStackTrace(); } return null; } - + try { if(raw_message.contains("^")) { replyMsg.setReply(MsbotConst.channelBotName+"不支持平方计算"); @@ -683,73 +662,69 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ return replyMsg; } }catch (Exception e) { - + } - - //转小写 - String message = raw_message.toLowerCase(); //查找答案 List list = new ArrayList(); List rep = new ArrayList(); String command = raw_message.substring(2); - while (it.hasNext()) { - msg = it.next(); - if (command.toLowerCase().contains(msg.getQuestion().toLowerCase())) { - list.add(msg); - } - } - if(list.size()!=0) { - //默认相似度 - int similar = 100; - //遍历list - for(Msg tempMsg:list){ - //查看相似度 - int similarity = getResult(tempMsg.getQuestion(),command); - //比较相似度 如果更相似 放入变量 - if(similarity result = (Map) JSON.parse(tuLingMsg); - System.out.println(tuLingMsg); - if((result.get("message")+"").contains("请求成功")) { - String reply = tuLingMsg.substring(tuLingMsg.indexOf("content")+10,tuLingMsg.indexOf("\",\"typed\":")); - replyMsg.setReply(reply); - return replyMsg; - } + String tuLingMsg = groupMsgService.MoliMsg(command, Math.abs(user_id.hashCode())+"", user_name); + @SuppressWarnings("unchecked") + Map result = (Map) JSON.parse(tuLingMsg); + System.out.println(tuLingMsg); + if((result.get("message")+"").contains("请求成功")) { + String reply = tuLingMsg.substring(tuLingMsg.indexOf("content")+10,tuLingMsg.indexOf("\",\"typed\":")); + replyMsg.setReply(reply); + return replyMsg; } - - - + } + + + Random r = new Random(); int random = r.nextInt(6) + 1; if(random==1) { @@ -771,31 +746,31 @@ private ReplyMsg handleNameMsg(String raw_message,String channel_id,String user_ replyMsg.setAt_sender(false); replyMsg.setReply("[CQ:image,file=img/buzhidao2.gif]"); } - return replyMsg; + return replyMsg; } public static int getResult(String A, String B) { - if(A.equals(B)) { - return 0; - } - //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 - int[][] dp = new int[A.length() + 1][B.length() + 1]; - for(int i = 1;i <= A.length();i++) - dp[i][0] = i; - for(int j = 1;j <= B.length();j++) - dp[0][j] = j; - for(int i = 1;i <= A.length();i++) { - for(int j = 1;j <= B.length();j++) { - if(A.charAt(i - 1) == B.charAt(j - 1)) - dp[i][j] = dp[i - 1][j - 1]; - else { - dp[i][j] = Math.min(dp[i - 1][j] + 1, - Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); - } - } - } - return dp[A.length()][B.length()]; - } + if(A.equals(B)) { + return 0; + } + //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 + int[][] dp = new int[A.length() + 1][B.length() + 1]; + for(int i = 1;i <= A.length();i++) + dp[i][0] = i; + for(int j = 1;j <= B.length();j++) + dp[0][j] = j; + for(int i = 1;i <= A.length();i++) { + for(int j = 1;j <= B.length();j++) { + if(A.charAt(i - 1) == B.charAt(j - 1)) + dp[i][j] = dp[i - 1][j - 1]; + else { + dp[i][j] = Math.min(dp[i - 1][j] + 1, + Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); + } + } + } + return dp[A.length()][B.length()]; + } private static double defAndign(double def, double ign) { double i = Double.parseDouble(String.format("%.2f", 100-(def-ign*def/100))); @@ -808,4 +783,4 @@ private static double defAndign(double def, double ign) { return i; } -} +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java index 0ff67a0..54c28f4 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/ChannelServiceImpl.java @@ -1,29 +1,6 @@ package com.badeling.msbot.serviceImpl; -import java.net.InetAddress; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; - -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; - -import com.badeling.msbot.entity.MonvTime; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.MsgZbCalculate; import com.badeling.msbot.domain.ChannelMsg; @@ -39,67 +16,73 @@ import com.badeling.msbot.service.DrawService; import com.badeling.msbot.service.GroupMsgService; import com.badeling.msbot.service.MvpImageService; -import com.badeling.msbot.service.WzXmlService; import com.badeling.msbot.util.Loadfont2; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import java.text.SimpleDateFormat; +import java.util.*; @Component public class ChannelServiceImpl implements ChannelService{ - + @Autowired MsgRepository msgRepository; - + @Autowired RoleDmgRepository roleDmgRepository; - + @Autowired GroupMsgService groupMsgService; - + @Autowired DrawService drawService; - + @Autowired MvpImageService mvpImageService; - + @Autowired MsgZbCalculate msgZbCalculate; - - @Autowired - WzXmlService wzXmlService; - + @Autowired MsgNoPrefixRepository msgNoPrefixRepository; - + @Override public void receive(String msg) { ChannelMsg channelMsg = null; try { channelMsg = new ObjectMapper().readValue(msg, ChannelMsg.class); } catch (JsonProcessingException e) { - // TODO 自动生成的 catch 块 e.printStackTrace(); } boolean isbotChannel = false; - + for(String channelId : MsbotConst.botChannel) { if((channelMsg.getChannel_id()+"").equals(channelId)) { isbotChannel = true; break; } } - + if(isbotChannel) { if(channelMsg.getMessage().startsWith(MsbotConst.botName)) { - System.out.println(channelMsg.toString()); - ReplyMsg result = handleNameMsg(channelMsg); - if(result!=null) { - ChannelReplyMsg crm = new ChannelReplyMsg(); + System.out.println(channelMsg.toString()); + ReplyMsg result = handleNameMsg(channelMsg); + if(result!=null) { + ChannelReplyMsg crm = new ChannelReplyMsg(); crm.setChannel_id(channelMsg.getChannel_id()); crm.setGuild_id(channelMsg.getGuild_id()); crm.setMessage(result.getReply()); groupMsgService.sendChannelMsg(crm); - } + } }else { List result = msgNoPrefixRepository.findMsgNPList(); for(MsgNoPrefix m : result) { @@ -109,7 +92,7 @@ public void receive(String msg) { crm.setGuild_id(channelMsg.getGuild_id()); crm.setMessage(m.getAnswer()); groupMsgService.sendChannelMsg(crm); - break; + break; } if(!m.isExact()&&channelMsg.getMessage().contains(m.getQuestion())) { ChannelReplyMsg crm = new ChannelReplyMsg(); @@ -117,16 +100,16 @@ public void receive(String msg) { crm.setGuild_id(channelMsg.getGuild_id()); crm.setMessage(m.getAnswer()); groupMsgService.sendChannelMsg(crm); - break; - + break; + } } } } - - - - + + + + } private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { @@ -138,7 +121,7 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { //查询 Set set = msgRepository.findAllQuestion(); Iterator it = set.iterator(); - + //测试字体 if(raw_message.startsWith(MsbotConst.botName+"测试字体")) { try { @@ -153,11 +136,11 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { } //内鬼 if(raw_message.contains("职业群")) { - replyMsg.setAt_sender(true); - replyMsg.setReply("林之灵1群:372752762\r\n林之灵2群:1107518527"); - return replyMsg; + replyMsg.setAt_sender(true); + replyMsg.setReply("林之灵1群:372752762\r\n林之灵2群:1107518527"); + return replyMsg; } - + //无视计算 if(raw_message.contains("无视")&&(raw_message.contains("+")||raw_message.contains("-"))) { try { @@ -167,13 +150,13 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { raw_message = raw_message.replace(" ", ""); raw_message = raw_message.replace("=", ""); raw_message = raw_message.replace("无视", ""); - double ign = 0; + double ign = 0; double ign_before = 0; double ign2 = 0; double ign_before2 = 0; //短消息回复 // String shortMsg = ""; - + if(raw_message.contains("+")&&!raw_message.contains("-")) { String[] getInt = raw_message.split("\\+"); for(int i=0;i1000*60*60*24*14) { - beginTime.add(Calendar.DAY_OF_MONTH, 14); - count = (count+1)%6; - } - //输出本周 以及 后五个周期 - StringBuffer message = new StringBuffer(); - message.append("世界组队时间表:"); - for(int i=0;i<6;i++) { - message.append("\r\n"); - message.append(sdf.format(beginTime.getTimeInMillis())).append(" "); - beginTime.add(Calendar.DAY_OF_MONTH, 13); - message.append(sdf.format(beginTime.getTimeInMillis())).append("\r\n");; - beginTime.add(Calendar.DAY_OF_MONTH, 1); - message.append(list[count]); - count = (count+1)%6; - } - replyMsg.setReply(message.toString()); - return replyMsg; + Calendar nowTime = Calendar.getInstance(); + Calendar beginTime = Calendar.getInstance(); + nowTime.set(Calendar.HOUR_OF_DAY, 0); + nowTime.set(Calendar.MINUTE, 0); + nowTime.set(Calendar.SECOND, 0); + beginTime.set(2021,4,12,0,0); + int count = 0; + //两周一循环 循环到本周 + while(nowTime.getTimeInMillis()-beginTime.getTimeInMillis()>1000*60*60*24*14) { + beginTime.add(Calendar.DAY_OF_MONTH, 14); + count = (count+1)%6; + } + //输出本周 以及 后五个周期 + StringBuffer message = new StringBuffer(); + message.append("世界组队时间表:"); + for(int i=0;i<6;i++) { + message.append("\r\n"); + message.append(sdf.format(beginTime.getTimeInMillis())).append(" "); + beginTime.add(Calendar.DAY_OF_MONTH, 13); + message.append(sdf.format(beginTime.getTimeInMillis())).append("\r\n");; + beginTime.add(Calendar.DAY_OF_MONTH, 1); + message.append(list[count]); + count = (count+1)%6; + } + replyMsg.setReply(message.toString()); + return replyMsg; } - - + + if(raw_message.replace(" ", "").equals(MsbotConst.botName)) { replyMsg.setAuto_escape(false); replyMsg.setAt_sender(false); replyMsg.setReply("(ノ゚▽゚)ノ我在哦~"); return replyMsg; } - + if(raw_message.replaceAll(MsbotConst.botName, "").replaceAll(" ","").equals("")) { raw_message = raw_message.replaceAll(" ",""); raw_message = raw_message.replaceFirst(MsbotConst.botName, ""); @@ -542,41 +536,11 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { replyMsg.setReply("蠢nm"); return replyMsg; } - //怪物查询 - if(raw_message.startsWith(MsbotConst.botName+"怪物")||raw_message.startsWith(MsbotConst.botName+" 怪物")) { - if(raw_message.equals(MsbotConst.botName+"怪物")||raw_message.equals(MsbotConst.botName+" 怪物")) { - replyMsg.setReply("爬,你才是怪物。"); - return replyMsg; - }else { - if(raw_message.contains(MsbotConst.botName+"怪物")||raw_message.contains(MsbotConst.botName+" 怪物")) { - raw_message = raw_message.substring(raw_message.indexOf("怪物")+2); - if(raw_message.indexOf(" ")==0) { - raw_message = raw_message.substring(1); - } - //查询怪物 - System.out.println(raw_message); - try { - if(raw_message.length()==7) { - Long mob_id = Long.parseLong(raw_message); - wzXmlService.searchMobForChannel(mob_id,channelMsg.getChannel_id(),channelMsg.getGuild_id()); - return null; - } - } catch (Exception e) { - } - wzXmlService.searchMobForChannel(raw_message,channelMsg.getChannel_id(),channelMsg.getGuild_id()); - return null; - - }else { - - } - - } - } - + if(raw_message.replaceAll(MsbotConst.botName, "").replaceAll(" ","").replaceAll("?","").equals("")) { raw_message = MsbotConst.botName+"固定回复问号"; } - + //占卜 if(raw_message.startsWith(MsbotConst.botName+"占卜")||raw_message.startsWith(MsbotConst.botName+" 占卜")) { String reply = new String(); @@ -588,13 +552,12 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { replyMsg.setAt_sender(true); return replyMsg; } catch (Exception e) { - // TODO 自动生成的 catch 块 e.printStackTrace(); } - + return null; } - + try { if(raw_message.contains("^")) { replyMsg.setReply(MsbotConst.botName+"不支持平方计算"); @@ -609,73 +572,73 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { return replyMsg; } }catch (Exception e) { - + } - + //查找答案 List list = new ArrayList(); List rep = new ArrayList(); String command = raw_message.substring(2); - while (it.hasNext()) { - msg = it.next(); - if (command.toLowerCase().contains(msg.getQuestion().toLowerCase())) { - list.add(msg); - } - } - if(list.size()!=0) { - //默认相似度 - int similar = 100; - //遍历list - for(Msg tempMsg:list){ - //查看相似度 - int similarity = getResult(tempMsg.getQuestion(),command); - //比较相似度 如果更相似 放入变量 - if(similarity result = (Map) JSON.parse(tuLingMsg); + Map result = (Map) JSON.parse(tuLingMsg); System.out.println(tuLingMsg); if((result.get("message")+"").contains("请求成功")) { String reply = tuLingMsg.substring(tuLingMsg.indexOf("content")+10,tuLingMsg.indexOf("\",\"typed\":")); @@ -684,9 +647,9 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { } } } - - - + + + Random r = new Random(); int random = r.nextInt(6) + 1; if(random==1) { @@ -708,31 +671,31 @@ private ReplyMsg handleNameMsg(ChannelMsg channelMsg) { replyMsg.setAt_sender(false); replyMsg.setReply("[CQ:image,file=img/buzhidao2.gif]"); } - return replyMsg; + return replyMsg; } public static int getResult(String A, String B) { - if(A.equals(B)) { - return 0; - } - //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 - int[][] dp = new int[A.length() + 1][B.length() + 1]; - for(int i = 1;i <= A.length();i++) - dp[i][0] = i; - for(int j = 1;j <= B.length();j++) - dp[0][j] = j; - for(int i = 1;i <= A.length();i++) { - for(int j = 1;j <= B.length();j++) { - if(A.charAt(i - 1) == B.charAt(j - 1)) - dp[i][j] = dp[i - 1][j - 1]; - else { - dp[i][j] = Math.min(dp[i - 1][j] + 1, - Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); - } - } - } - return dp[A.length()][B.length()]; - } + if(A.equals(B)) { + return 0; + } + //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 + int[][] dp = new int[A.length() + 1][B.length() + 1]; + for(int i = 1;i <= A.length();i++) + dp[i][0] = i; + for(int j = 1;j <= B.length();j++) + dp[0][j] = j; + for(int i = 1;i <= A.length();i++) { + for(int j = 1;j <= B.length();j++) { + if(A.charAt(i - 1) == B.charAt(j - 1)) + dp[i][j] = dp[i - 1][j - 1]; + else { + dp[i][j] = Math.min(dp[i - 1][j] + 1, + Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1)); + } + } + } + return dp[A.length()][B.length()]; + } private static double defAndign(double def, double ign) { double i = Double.parseDouble(String.format("%.2f", 100-(def-ign*def/100))); @@ -745,4 +708,4 @@ private static double defAndign(double def, double ign) { return i; } -} +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java index 8c4e681..a0b65f4 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/DrawServiceImpl.java @@ -1,24 +1,17 @@ package com.badeling.msbot.serviceImpl; -import com.alibaba.fastjson.JSON; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.NewImageUtils; -import com.badeling.msbot.domain.Photo; -import com.badeling.msbot.entity.Friends; import com.badeling.msbot.entity.MonvTime; import com.badeling.msbot.entity.Msg; -import com.badeling.msbot.repository.FriendsRepository; import com.badeling.msbot.repository.MonvTimeRepository; import com.badeling.msbot.service.DrawService; +import com.badeling.msbot.service.MvpImageService; import com.badeling.msbot.util.Loadfont; import com.badeling.msbot.util.Loadfont2; -import org.apache.commons.codec.digest.DigestUtils; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.apache.commons.codec.digest.DigestUtils; import javax.imageio.ImageIO; import java.awt.*; @@ -26,486 +19,103 @@ import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; -import java.io.*; -import java.net.URL; -import java.net.URLConnection; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.util.List; import java.util.*; - @Component public class DrawServiceImpl implements DrawService{ - - @Autowired - FriendsRepository friendsRepository; - - public static void main(String[] args) throws Exception { - String a1 = "您今日的运势指数为★☆☆☆☆"; - String a2 = "运势最好的频道是7频道哦!"; - String a3 = "寒风水冷隐作痛,鸡犬相闻闹晨曦。"; - String a4 = "宜:爬起源之塔"; - String a5 = "喜提4级克制之戒"; - String a6 = "忌:肝活动"; - String a7 = "这活动是人玩的吗??"; - String a8 = "今日最佳玄学地图是:"; - String a9 = "林中之城,韧性之林"; - - String roleUrl = ""; - - File f = new File("D:\\go-cqhttp\\data\\images\\class"); - File[] listFiles = f.listFiles(); - for(File file : listFiles) { - roleUrl = file.getParent() + "\\" +file.getName(); - System.out.println(roleUrl); - String imageUrl = "D:\\go-cqhttp\\data\\images\\zb\\19.jpg"; - String sourceFilePath = MsbotConst.imageUrl + "zb/background.png"; - - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - - //紫色条形框 - BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "zb/a1.png")); - - //人物 - BufferedImage roleImg = ImageIO.read(new File(roleUrl)); - roleImg = NewImageUtils.resizeBufferedImage(roleImg,188,210,false); - sourceFile = watermark(sourceFile, roleImg , 550, 30, 1.0f); - - //地图 - BufferedImage mapImg = ImageIO.read(new File(imageUrl)); - mapImg = NewImageUtils.resizeBufferedImage(mapImg,370,180,false); - mapImg = NewImageUtils.setRadius(mapImg,30,0,0); - sourceFile = watermark(sourceFile, buffImg1 , 450, 230, 1.0f); - sourceFile = watermark(sourceFile, mapImg , 460, 350, 1.0f); - - - Graphics2D g = sourceFile.createGraphics(); - Font font = Loadfont2.Font(22); - g.setFont(font); - g.setColor(new Color(230,230,230)); - //指数 - g.drawString(a1,65,65); - //频道 - g.drawString(a2,65,65+65); - //事件 - - if(a3.length()>16) { - g.drawString(a3.substring(0,16),65,65+65+35); - g.drawString(a3.substring(16),65,65+65+35+35); - }else { - g.drawString(a3,65,65+65+35); - } - //宜 - g.drawString(a4,65,65+65+30+110); - //宜事件 - if(a5.length()>16) { - g.drawString(a5.substring(0,16),65,65+65+30+110+35); - g.drawString(a5.substring(16),65,65+65+30+110+35+35); - }else { - g.drawString(a5,65,65+65+30+110+35); - } - - - //忌 - g.drawString(a6,65,65+65+30+110+30+130); - //忌事件 - if(a7.length()>16) { - g.drawString(a7.substring(0,16),65,65+65+30+110+30+130+35); - g.drawString(a7.substring(16),65,65+65+30+110+30+130+35+35); - }else { - g.drawString(a7,65,65+65+30+110+30+130+35); - } - - //地图 - g.drawString(a8,480,65+65+30+110); - //地图名 - g.drawString(a9,480,65+65+30+110+35); - - g.dispose(); - -// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); - // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 - BufferedImage newBufferedImage = new BufferedImage( - sourceFile.getWidth(), sourceFile.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, - Color.WHITE, null); - // write to jpeg file -// ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - } - - } + @Autowired + MvpImageService mvpImageService; @Autowired private MonvTimeRepository monvTimeRepository; - @Override - public String startDraw() throws Exception { - Random r = new Random(); - HashSet rr = new HashSet<>(); - boolean has4Frends =false; - //系统生成随机数 - while (rr.size() < 10) { - int i = r.nextInt(10000)+1; - if(i<200) { - has4Frends = true; - } - rr.add(i); - } - //创建浮莲子 - String sourceFilePath; - if(has4Frends) { - sourceFilePath = MsbotConst.imageUrl + "kf3/" + "2.png"; - }else { - sourceFilePath = MsbotConst.imageUrl + "kf3/" + "1.png"; - } - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - BufferedImage buffImg = null; - //获取各个等级浮莲子的数量 - int f2 = Integer.parseInt(friendsRepository.getFriendsNum("2")); - int f3 = Integer.parseInt(friendsRepository.getFriendsNum("3")); - int f4 = Integer.parseInt(friendsRepository.getFriendsNum("4")); - int p2 = Integer.parseInt(friendsRepository.getPhotoNum("2")); - int p3 = Integer.parseInt(friendsRepository.getPhotoNum("3")); - int p4 = Integer.parseInt(friendsRepository.getPhotoNum("4")); - // 构建叠加层 - int count =1; - for(int random:rr){ - - Friends f; - if(count<9) { - if(random<200) { - int random2 = r.nextInt(f4); - f = friendsRepository.findFriendsByStar("4",random2); - }else if(random<200+400) { - int random2 = r.nextInt(f3); - f = friendsRepository.findFriendsByStar("3",random2); - }else if(random<200+400+2500) { - int random2 = r.nextInt(f2); - f = friendsRepository.findFriendsByStar("2",random2); - }else if(random<200+400+2500+700) { - int random2 = r.nextInt(p4); - f = friendsRepository.findPhotoByStar("4",random2); - }else if(random<200+400+2500+700+2000) { - int random2 = r.nextInt(p3); - f = friendsRepository.findPhotoByStar("3",random2); - }else { - int random2 = r.nextInt(p2); - f = friendsRepository.findPhotoByStar("2",random2); - } - }else if(count==9){ - if(random<200) { - int random2 = r.nextInt(f4); - f = friendsRepository.findFriendsByStar("4",random2); - }else if(random<200+400) { - int random2 = r.nextInt(f3); - f = friendsRepository.findFriendsByStar("3",random2); - }else{ - int random2 = r.nextInt(f2); - f = friendsRepository.findFriendsByStar("2",random2); - } - }else { - if(random<200) { - int random2 = r.nextInt(f4); - f = friendsRepository.findFriendsByStar("4",random2); - }else if(random<200+2900) { - int random2 = r.nextInt(f3); - f = friendsRepository.findFriendsByStar("3",random2); - }else if(random<200+2900+700) { - int random2 = r.nextInt(p4); - f = friendsRepository.findPhotoByStar("4",random2); - }else{ - int random2 = r.nextInt(p3); - f = friendsRepository.findPhotoByStar("3",random2); - } - } - BufferedImage friends = createFriends(f.getId(),f.getAtr(),f.getStar(),f.getStarBlank()); - if(count<=5) { - buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); - }else { - buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-6) , 369, 1.0f); - } - count = count + 1; - } -// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); - // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 - BufferedImage newBufferedImage = new BufferedImage( - buffImg.getWidth(), buffImg.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, - Color.WHITE, null); - // write to jpeg file - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; - } - - //生成十连图片 - private BufferedImage createFriends(String id,String atr,String Star,String Star_blank) throws Exception { - String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; - String waterFilePath; - if(Star_blank.equals("0")) { - waterFilePath = MsbotConst.imageUrl + "kf3/" + "icon_photo_" + id + ".png"; - }else { - waterFilePath = MsbotConst.imageUrl + "kf3/" + "icon_chara_" + id + ".png"; - } - // 构建叠加层 - BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f); - //加属性 - waterFilePath = MsbotConst.imageUrl + "kf3/" + "icon_atr_"+ atr +".png"; - buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 5, 5, 1.0f); - //加边框 - if(Star_blank.equals("0")) { - waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame.png"; - }else { - waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame_kiseki.png"; - } - buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); - //加星星 - BufferedImage starImg = makeStar(Integer.parseInt(Star),Integer.parseInt(Star_blank)); - buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); - // 输出水印图片 -// generateWaterFile(buffImg, saveFilePath); + /** + * + * @Title: 构造图片 + * @Description: 生成水印并返回java.awt.image.BufferedImage + * @param file + * 源文件(图片) + * @param waterFile + * 水印文件(图片) + * @param x + * 距离右下角的X偏移量 + * @param y + * 距离右下角的Y偏移量 + * @param alpha + * 透明度, 选择值从0.0~1.0: 完全透明~完全不透明 + * @return BufferedImage + * @throws IOException + */ + + public static BufferedImage watermark(File file, File waterFile, int x, int y, float alpha) throws Exception { + // 获取底图 + BufferedImage buffImg = ImageIO.read(file); + // 获取层图 + BufferedImage waterImg = ImageIO.read(waterFile); + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 return buffImg; } + public static BufferedImage watermark(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws Exception { + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 + return buffImg; + } - //抓取浮莲子的数据 - @Override - public String updateFriends() { - String url = "https://sandstar.site/kf3_db/friends/"; - String returnMsg = "增加数据"; - String addMsg = ""; - int countFriends = 0; + public static BufferedImage watermark(BufferedImage buffImg, File waterFile, int x, int y, float alpha) throws Exception { + // 底图直接传入 + // 获取层图 + BufferedImage waterImg = ImageIO.read(waterFile); + // 创建Graphics2D对象,用在底图对象上绘图 + Graphics2D g2d = buffImg.createGraphics(); + int waterImgWidth = waterImg.getWidth();// 获取层图的宽度 + int waterImgHeight = waterImg.getHeight();// 获取层图的高度 + // 在图形和图像中实现混合和透明效果 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); + // 绘制 + g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null); + g2d.dispose();// 释放图形上下文使用的系统资源 + return buffImg; + } + /** + * 输出水印图片 + * + * @param buffImg + * 图像加水印之后的BufferedImage对象 + * @param savePath + * 图像加水印之后的保存路径 + */ + private static void generateWaterFile(BufferedImage buffImg, String savePath) { + int temp = savePath.lastIndexOf(".") + 1; try { - Document doc = Jsoup.connect(url).get(); - Elements elements = doc.select("div[class~=^friends-grid]"); - - for(Element ele : elements) { - String content = ele.toString(); - Friends friends = new Friends(); - int index1 = content.indexOf("alt"); - int count = 0; - int starNum = 0; - int starBlankNum = 0; - while(true) { - index1 = content.indexOf("alt",index1); - if(index1 == -1) { - break; - } - int index2 = content.indexOf("\"",index1+1); - int index3 = content.indexOf("\"",index2+1); - if(count==1) { - friends.setId(content.substring(index2+1, index3)); - }else if(count==3) { - friends.setAtr(content.substring(index2+1, index3)); - }else if(count>3) { - String a = content.substring(index2+1, index3); - if(a.contains("★")) { - starNum = starNum + 1; - }else if(a.contains("☆")) { - starBlankNum = starBlankNum + 1; - }else { - - } - - } - count = count + 1; - index1 = index3; - } - - friends.setStar(starNum+""); - friends.setStarBlank(starBlankNum+""); - friends.setName(content.substring(content.indexOf("")+3,content.indexOf(""))); - if(!friends.getId().contains("★")&&!friends.getAtr().contains("★")) { - Friends findById = friendsRepository.findFriendsById(friends.getId()); - if(findById==null) { - friendsRepository.save(friends); - countFriends = countFriends + 1; - addMsg = addMsg + "\r\nID:" + friends.getId()+ " rare:" + friends.getStar() + " name:" + friends.getName(); - } - } - - } - } catch (Exception e) { - System.out.println("err"); + ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); + } catch (Exception e1) { + e1.printStackTrace(); } - returnMsg = returnMsg + countFriends + "条" + addMsg; - return returnMsg; - } - - //抓取照片的数据 - @Override - public String updatePhoto() { - StringBuilder json = new StringBuilder(); - String returnMsg = "增加数据"; - String addMsg = ""; - int count = 0; - try { - URL urlObject = new URL("https://sandstar.site/static/kf3_db/photo/PHOTO_DATA_cn.json"); - URLConnection uc = urlObject.openConnection(); - BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(),"UTF-8")); - String inputLine = null; - while ( (inputLine = in.readLine()) != null) { - json.append(inputLine); - } - in.close(); - } catch (Exception e) { - System.out.println(e); - } - String jsonData = json.toString().replace(" ", ""); - List list = JSON.parseArray(jsonData, Photo.class); - for(Photo a:list) { - Friends friends = new Friends(); - if(a.getHead().equals("0")||a.getLevel().equals("0")) { - continue; - } - friends.setId(a.getId()); - if(a.getType().equals("1")) { - friends.setAtr("parameter"); - }else if(a.getType().equals("2")){ - friends.setAtr("ability"); - }else { - continue; - } - friends.setStar(a.getRarity()); - friends.setStarBlank("0"); - friends.setName(a.getName()); - - Friends findById = friendsRepository.findFriendsById(friends.getId()); - if(findById==null) { - friendsRepository.save(friends); - addMsg = addMsg + "\r\nID:" + friends.getId()+ " rare:" + friends.getStar() + " name:" + friends.getName(); - count = count + 1; - } - - } - returnMsg = returnMsg + count + "条" + addMsg; - return returnMsg; - } - //创建星星 - private static BufferedImage makeStar(int i, int j) throws Exception { - String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "star" + (i+j) +".png"; - String waterFilePath = MsbotConst.imageUrl + "kf3/" + "icon_rankstar.png"; - String waterFilePath_b = MsbotConst.imageUrl + "kf3/" + "icon_rankstar_blank.png"; - BufferedImage background = ImageIO.read(new File(sourceFilePath)); - BufferedImage star = ImageIO.read(new File(waterFilePath)); - BufferedImage star_b = ImageIO.read(new File(waterFilePath_b)); - //画的总星 - int count = 1; - //画的实星 - int count_true = 1; - // 构建叠加层 - BufferedImage buffImg = NewImageUtils.watermark(background, star , (162-27*(i+j))/2 + 27*count, 0, 1.0f); -// BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath) , 0, 0, 1.0f); - while(count sy) { - sx = sy; - targetW = (int) (sx * source.getWidth()); - } else if(flag && sx <= sy){ - sy = sx; - targetH = (int) (sy * source.getHeight()); - } - if (type == BufferedImage.TYPE_CUSTOM) { // handmade - ColorModel cm = source.getColorModel(); - WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH); - boolean alphaPremultiplied = cm.isAlphaPremultiplied(); - target = new BufferedImage(cm, raster, alphaPremultiplied, null); - } else { - target = new BufferedImage(targetW, targetH, type); - } - Graphics2D g = target.createGraphics(); - g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); - g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); - g.dispose(); - return target; - } - //小狐狸生成 - @Override - public String kemomimiDraw() throws Exception { - Random r = new Random(); - HashSet rr = new HashSet<>(); - boolean has5Frends =false; - //系统生成随机数 - while (rr.size() < 10) { - int i = r.nextInt(10000)+1; - if(i<300) { - has5Frends = true; - } - rr.add(i); - } - /** - * i为编号 - star 5 <300 - star 4 <2200 - star 3 <4800 - star 2 <10000 - */ - if(!has5Frends) { - int i = r.nextInt(10000)+1; - if(i<500) { - rr.clear(); - while (rr.size() < 10) { - int j = r.nextInt(5000)+4801; - rr.add(j); - } - }else if(i<800) { - rr.clear(); - while (rr.size() < 10) { - int j = r.nextInt(2500)+2201; - rr.add(j); - } - }else if(i<1000) { - rr.clear(); - while (rr.size() < 10) { - int j = r.nextInt(1800)+301; - rr.add(j); - } - } - } - - //创建浮莲子 - String sourceFilePath; - if(has5Frends) { - sourceFilePath = MsbotConst.imageUrl + "kf3/" + "2.png"; - }else { - sourceFilePath = MsbotConst.imageUrl + "kf3/" + "1.png"; + @SuppressWarnings("unused") + private static BufferedImage resizeBufferedImage(BufferedImage source, int targetW, int targetH, boolean flag) { + int type = source.getType(); + BufferedImage target = null; + double sx = (double) targetW / source.getWidth(); + double sy = (double) targetH / source.getHeight(); + if (flag && sx > sy) { + sx = sy; + targetW = (int) (sx * source.getWidth()); + } else if(flag && sx <= sy){ + sy = sx; + targetH = (int) (sy * source.getHeight()); + } + if (type == BufferedImage.TYPE_CUSTOM) { // handmade + ColorModel cm = source.getColorModel(); + WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH); + boolean alphaPremultiplied = cm.isAlphaPremultiplied(); + target = new BufferedImage(cm, raster, alphaPremultiplied, null); + } else { + target = new BufferedImage(targetW, targetH, type); + } + Graphics2D g = target.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); + g.dispose(); + return target; + } + //小狐狸生成 + @Override + public String kemomimiDraw() throws Exception { + Random r = new Random(); + HashSet rr = new HashSet<>(); + boolean has5Frends =false; + //系统生成随机数 + while (rr.size() < 10) { + int i = r.nextInt(10000)+1; + if(i<300) { + has5Frends = true; } - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - BufferedImage buffImg = null; - - int f2 = 60; - int f3 = 26; - int f4 = 19; - int f5 = 3; - - // 构建叠加层 - int count =1; - for(int random:rr){ - String f; - int star; - - if(random<300) { - int random2 = r.nextInt(f5)+1; - star = 5; - f = "5-"+random2; - }else if(random<300+1900) { - int random2 = r.nextInt(f4)+1; - star = 4; - f = "4-"+random2; - }else if(random<200+1900+2700) { - int random2 = r.nextInt(f3)+1; - star = 3; - f = "3-"+random2; - }else{ - int random2 = r.nextInt(f2)+1; - star = 2; - f = "2-"+random2; - } - - BufferedImage friends = createKomomimi(f,star); + rr.add(i); + } + /** + * i为编号 + star 5 <300 + star 4 <2200 + star 3 <4800 + star 2 <10000 + */ + if(!has5Frends) { + int i = r.nextInt(10000)+1; + if(i<500) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(5000)+4801; + rr.add(j); + } + }else if(i<800) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(2500)+2201; + rr.add(j); + } + }else if(i<1000) { + rr.clear(); + while (rr.size() < 10) { + int j = r.nextInt(1800)+301; + rr.add(j); + } + } + } + //创建浮莲子 + String sourceFilePath; + if(has5Frends) { + sourceFilePath = MsbotConst.imageUrl + "kf3/" + "2.png"; + }else { + sourceFilePath = MsbotConst.imageUrl + "kf3/" + "1.png"; + } + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + BufferedImage buffImg = null; + //获取各个等级浮莲子的数量 +// int f2 = 10; +// int f3 = 9; +// int f4 = 9; +// int f5 = 1; + int f2 = 60; + int f3 = 26; + int f4 = 19; + int f5 = 3; - if(count<=5) { - buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); - }else { - buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-6) , 369, 1.0f); - } - count = count + 1; - } -// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); - // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 - BufferedImage newBufferedImage = new BufferedImage( - buffImg.getWidth(), buffImg.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, - Color.WHITE, null); - // write to jpeg file - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + // 构建叠加层 + int count =1; + for(int random:rr){ + String f; + int star; + + if(random<300) { + int random2 = r.nextInt(f5)+1; + star = 5; + f = "5-"+random2; + }else if(random<300+1900) { + int random2 = r.nextInt(f4)+1; + star = 4; + f = "4-"+random2; + }else if(random<200+1900+2700) { + int random2 = r.nextInt(f3)+1; + star = 3; + f = "3-"+random2; + }else{ + int random2 = r.nextInt(f2)+1; + star = 2; + f = "2-"+random2; + } + BufferedImage friends = createKomomimi(f,star); + if(count<=5) { + buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-1) , 179, 1.0f); + }else { + buffImg = NewImageUtils.watermark(sourceFile, friends, 141+210*(count-6) , 369, 1.0f); + } + count = count + 1; } +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + buffImg.getWidth(), buffImg.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, + Color.WHITE, null); + // write to jpeg file + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } - @Override - public String kemomimiDraw2(List pick) throws Exception { + @Override + public String kemomimiDraw2(List pick) throws Exception { Random r = new Random(); HashSet rr = new HashSet<>(); boolean has5Frends =false; @@ -748,23 +360,23 @@ public String kemomimiDraw2(List pick) throws Exception { } //生成十连图片 - private BufferedImage createKomomimi(String id,int star) throws Exception { - String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; - String waterFilePath; - waterFilePath = MsbotConst.imageUrl + "kf3/" + id + ".jpg"; - // 构建叠加层 - BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f); - //加边框 - waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame_kiseki.png"; - buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); - //加星星 - waterFilePath = MsbotConst.imageUrl + "kf3/" + "star" + star + ".png"; - BufferedImage starImg = ImageIO.read(new File(waterFilePath)); - buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); - // 输出水印图片 + private BufferedImage createKomomimi(String id,int star) throws Exception { + String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; + String waterFilePath; + waterFilePath = MsbotConst.imageUrl + "kf3/" + id + ".jpg"; + // 构建叠加层 + BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f); + //加边框 + waterFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_frame_kiseki.png"; + buffImg = NewImageUtils.watermark(buffImg, new File(waterFilePath), 0, 0, 1.0f); + //加星星 + waterFilePath = MsbotConst.imageUrl + "kf3/" + "star" + star + ".png"; + BufferedImage starImg = ImageIO.read(new File(waterFilePath)); + buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); + // 输出水印图片 // generateWaterFile(buffImg, saveFilePath); - return buffImg; - } + return buffImg; + } private BufferedImage createKomomimi2(int count,List pick) throws Exception { String sourceFilePath = MsbotConst.imageUrl + "kf3/" + "charaicon_base.png"; @@ -802,238 +414,218 @@ private BufferedImage createKomomimi2(int count,List pick) throws Exception BufferedImage starImg = ImageIO.read(new File(waterFilePath)); buffImg = NewImageUtils.watermark(buffImg, starImg , 0, 135, 1.0f); // 输出水印图片 - //generateWaterFile(buffImg, saveFilePath); + //generateWaterFile(buffImg, saveFilePath); return buffImg; } + @Override + public String throwSomeone(String headImg) throws Exception { + String sourceFilePath = MsbotConst.imageUrl + "img/throw.jpg"; + String waterFilePath = MsbotConst.imageUrl + headImg; + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + BufferedImage buffImg = ImageIO.read(new File(waterFilePath)); + buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); + buffImg = NewImageUtils.convertCircular(buffImg); + buffImg = NewImageUtils.rotateImage(buffImg,300); + buffImg = NewImageUtils.watermark(sourceFile, buffImg, 13, 175, 1.0f); + BufferedImage newBufferedImage = new BufferedImage( + buffImg.getWidth(), buffImg.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, + Color.WHITE, null); + // write to jpeg file + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } - @Override - public String throwSomeone(String headImg) throws Exception { - String sourceFilePath = MsbotConst.imageUrl + "img/throw.jpg"; - String waterFilePath = MsbotConst.imageUrl + headImg; - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - BufferedImage buffImg = ImageIO.read(new File(waterFilePath)); - buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); - buffImg = NewImageUtils.convertCircular(buffImg); - buffImg = NewImageUtils.rotateImage(buffImg,300); - buffImg = NewImageUtils.watermark(sourceFile, buffImg, 13, 175, 1.0f); - BufferedImage newBufferedImage = new BufferedImage( - buffImg.getWidth(), buffImg.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, - Color.WHITE, null); - // write to jpeg file - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; - } + @Override + public String pouchSomeone(String headImg) throws Exception { + String sourceFilePath = MsbotConst.imageUrl + "img/punch.jpg"; + String waterFilePath = MsbotConst.imageUrl + headImg; + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + BufferedImage buffImg = ImageIO.read(new File(waterFilePath)); + buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); + buffImg = NewImageUtils.convertCircular(buffImg); + buffImg = NewImageUtils.rotateImage(buffImg,320); + sourceFile = NewImageUtils.watermark(sourceFile, buffImg, 50,300, 1.0f); + //第二张 + buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); + buffImg = NewImageUtils.convertCircular(buffImg); + buffImg = NewImageUtils.rotateImage(buffImg,60); + buffImg = NewImageUtils.watermark(sourceFile, buffImg, 280, 270, 1.0f); + BufferedImage newBufferedImage = new BufferedImage( + buffImg.getWidth(), buffImg.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, + Color.WHITE, null); + // write to jpeg file + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } - @Override - public String pouchSomeone(String headImg) throws Exception { - String sourceFilePath = MsbotConst.imageUrl + "img/punch.jpg"; - String waterFilePath = MsbotConst.imageUrl + headImg; - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - BufferedImage buffImg = ImageIO.read(new File(waterFilePath)); - buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); - buffImg = NewImageUtils.convertCircular(buffImg); - buffImg = NewImageUtils.rotateImage(buffImg,320); - sourceFile = NewImageUtils.watermark(sourceFile, buffImg, 50,300, 1.0f); - //第二张 - buffImg = NewImageUtils.resizeBufferedImage(buffImg,148,148,true); - buffImg = NewImageUtils.convertCircular(buffImg); - buffImg = NewImageUtils.rotateImage(buffImg,60); - buffImg = NewImageUtils.watermark(sourceFile, buffImg, 280, 270, 1.0f); - BufferedImage newBufferedImage = new BufferedImage( - buffImg.getWidth(), buffImg.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(buffImg, 0, 0, - Color.WHITE, null); - // write to jpeg file - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + @Override + public String testFont(String message) throws Exception { + BufferedImage buffImg = new BufferedImage(480, (message.length()/24+1)*34, BufferedImage.TYPE_INT_RGB); + Graphics2D g = buffImg.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0,0,6000,6000);//填充整个屏幕 + Font font = Loadfont.Font(); + g.setBackground(Color.WHITE); + g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); + g.setFont(font); + font = Loadfont.Font(); + g.setColor(new Color(237,120,1)); + for(int i=0;imessage.length()) { + g.drawString(message.substring(i),32,32*((i+24)/24)-6); + }else { + g.drawString(message.substring(i, i+24),32,32*((i+24)/24)-6); + } } + g.dispose(); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(buffImg, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } - @Override - public String testFont(String message) throws Exception { - BufferedImage buffImg = new BufferedImage(480, (message.length()/24+1)*34, BufferedImage.TYPE_INT_RGB); - Graphics2D g = buffImg.createGraphics(); - g.setColor(Color.WHITE); - g.fillRect(0,0,6000,6000);//填充整个屏幕 - Font font = Loadfont.Font(); - g.setBackground(Color.WHITE); - g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); - g.setFont(font); - font = Loadfont.Font(); - g.setColor(new Color(237,120,1)); - for(int i=0;imessage.length()) { - g.drawString(message.substring(i),32,32*((i+24)/24)-6); - }else { - g.drawString(message.substring(i, i+24),32,32*((i+24)/24)-6); - } - } - g.dispose(); - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(buffImg, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; - } - - @Override - public String ignImage(String ignDate) throws Exception { - ignDate = ignDate.replaceAll("(", "(").replaceAll(")", ")") - .replaceAll("Infinity", "∞").replaceAll("NaN", "0"); - String[] split = ignDate.split("\\r\\n"); - - - String sourceFilePath = MsbotConst.imageUrl + "img/ign_background.jpg"; - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - Graphics2D g = sourceFile.createGraphics(); - Font font = Loadfont2.Font(16); - g.setFont(font); - g.setColor(new Color(230,230,230)); - - int x1 = 65; - int x2 = 382; - int x3 = 687; - int y1 = 70; - int y2 = 288; - - g.drawString("基本数据",x1,y1); - g.drawString("超高防对比", x1, y2); - g.drawString("高防对比",x2,y2); - g.drawString("中防对比", x3, y2); - - font = Loadfont2.Font(14); - g.setFont(font); - - g.drawString(split[0], x1, y1+31); - g.drawString(split[1], x1, y1+31*2); - g.drawString(split[2], x1, y1+31*3); - g.drawString(split[3], x1, y1+31*4); - - g.drawString(split[5], x1, y2+31); - g.drawString(split[6], x1, y2+31*2); - g.drawString(split[7], x1, y2+31*3); - g.drawString(split[8], x1, y2+31*4); - - g.drawString(split[10], x2, y2+31); - g.drawString(split[11], x2, y2+31*2); - g.drawString(split[12], x2, y2+31*3); - g.drawString(split[13], x2, y2+31*4); - - g.drawString(split[15], x3, y2+31); - g.drawString(split[16], x3, y2+31*2); - g.drawString(split[17], x3, y2+31*3); - g.drawString(split[18], x3, y2+31*4); - - String saveFilePath = MsbotConst.imageUrl + uuid +".jpg"; + @Override + public String ignImage(String ignDate) throws Exception { + ignDate = ignDate.replaceAll("(", "(").replaceAll(")", ")") + .replaceAll("Infinity", "∞").replaceAll("NaN", "0"); + String[] split = ignDate.split("\\r\\n"); + + + String sourceFilePath = MsbotConst.imageUrl + "img/ign_background.jpg"; + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + Graphics2D g = sourceFile.createGraphics(); + Font font = Loadfont2.Font(16); + g.setFont(font); + g.setColor(new Color(230,230,230)); + + int x1 = 65; + int x2 = 382; + int x3 = 687; + int y1 = 70; + int y2 = 288; + + g.drawString("基本数据",x1,y1); + g.drawString("超高防对比", x1, y2); + g.drawString("高防对比",x2,y2); + g.drawString("中防对比", x3, y2); + + font = Loadfont2.Font(14); + g.setFont(font); + + g.drawString(split[0], x1, y1+31); + g.drawString(split[1], x1, y1+31*2); + g.drawString(split[2], x1, y1+31*3); + g.drawString(split[3], x1, y1+31*4); + + g.drawString(split[5], x1, y2+31); + g.drawString(split[6], x1, y2+31*2); + g.drawString(split[7], x1, y2+31*3); + g.drawString(split[8], x1, y2+31*4); + + g.drawString(split[10], x2, y2+31); + g.drawString(split[11], x2, y2+31*2); + g.drawString(split[12], x2, y2+31*3); + g.drawString(split[13], x2, y2+31*4); + + g.drawString(split[15], x3, y2+31); + g.drawString(split[16], x3, y2+31*2); + g.drawString(split[17], x3, y2+31*3); + g.drawString(split[18], x3, y2+31*4); + + String saveFilePath = MsbotConst.imageUrl + uuid +".jpg"; // String saveFilePath = "C:\\Users\\Admin\\Desktop\\result.jpg"; - - // write to jpeg file + + // write to jpeg file // ImageIO.write(newBufferedImage, "jpg", new File(CoolQconst.imageUrl + uuid +".jpg")); - ImageIO.write(sourceFile, "jpg", new File(saveFilePath)); - generateWaterFile(sourceFile, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + ImageIO.write(sourceFile, "jpg", new File(saveFilePath)); + generateWaterFile(sourceFile, saveFilePath); + g.dispose(); + return "[CQ:image,file=" + uuid +".jpg]"; + } + + @Override + public String startDrawMs() throws Exception { + Random r = new Random(); + HashSet randomList = new HashSet<>(); + while (randomList.size() < 10) { + int i = r.nextInt(10000)+1; + randomList.add(i); } - @Override - public String startDrawMs(MonvTime monvTime) throws Exception { - int prize_1=0; - int prize_2=0; - int prize_3=0; - int prize_4=0; - int prize_5=0; - Random r = new Random(); - HashSet randomList = new HashSet<>(); - while (randomList.size() < 10) { - int i = r.nextInt(10000)+1; - randomList.add(i); - } - - Calendar cal = Calendar.getInstance(); - int w=cal.get(Calendar.DAY_OF_WEEK)-1; - - String sourceFilePath = MsbotConst.imageUrl + "bfb/" + "mn.jpg"; - - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); - - BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "1.png")); - BufferedImage buffImg2 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "2.png")); - BufferedImage buffImg3 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "3.png")); - BufferedImage buffImg4 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "4.png")); - BufferedImage buffImg5 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "5.png")); - List list = new ArrayList<>(); - for(Integer random : randomList) { - if(random<7550) { - list.add(NewImageUtils.resizeBufferedImage(buffImg1,90,90,false)); - prize_1=prize_1+1; - }else if(random<7550+2124){ - list.add(NewImageUtils.resizeBufferedImage(buffImg2,90,90,false)); - prize_2=prize_2+1; - }else if(random<7550+2124+300) { - list.add(NewImageUtils.resizeBufferedImage(buffImg3,90,90,false)); - prize_3=prize_3+1; - }else if(random<7550+2124+300+20) { - list.add(NewImageUtils.resizeBufferedImage(buffImg4,90,90,false)); - prize_4=prize_4+1; - }else { - list.add(NewImageUtils.resizeBufferedImage(buffImg5,90,90,false)); - prize_5=prize_5+1; - } - } - System.out.println(monvTime.getId()); - System.out.println(monvTime.getPrize_1()); - System.out.println(monvTime.getPrize_2()); - System.out.println(monvTime.getPrize_3()); - System.out.println(monvTime.getPrize_4()); - System.out.println(monvTime.getPrize_5()); - - monvTimeRepository.modifyUpdatePrize( - monvTime.getId(), - monvTime.getPrize_1()+prize_1, - monvTime.getPrize_2()+prize_2, - monvTime.getPrize_3()+prize_3, - monvTime.getPrize_4()+prize_4, - monvTime.getPrize_5()+prize_5 - ); - - sourceFile = watermark(sourceFile, list.get(0) , 375, 410, 1.0f); - sourceFile = watermark(sourceFile, list.get(1) , 620, 410, 1.0f); - sourceFile = watermark(sourceFile, list.get(2) , 870, 410, 1.0f); - sourceFile = watermark(sourceFile, list.get(3) , 250, 610, 1.0f); - sourceFile = watermark(sourceFile, list.get(4) , 500, 610, 1.0f); - sourceFile = watermark(sourceFile, list.get(5) , 745, 610, 1.0f); - sourceFile = watermark(sourceFile, list.get(6) , 990, 610, 1.0f); - sourceFile = watermark(sourceFile, list.get(7) , 375, 805, 1.0f); - sourceFile = watermark(sourceFile, list.get(8) , 620, 805, 1.0f); - sourceFile = watermark(sourceFile, list.get(9) , 870, 805, 1.0f); - + Calendar cal = Calendar.getInstance(); + int w=cal.get(Calendar.DAY_OF_WEEK)-1; + + String sourceFilePath = MsbotConst.imageUrl + "bfb/" + "mn.jpg"; + + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + + BufferedImage buffImg1 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "1.png")); + BufferedImage buffImg2 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "2.png")); + BufferedImage buffImg3 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "3.png")); + BufferedImage buffImg4 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "4.png")); + BufferedImage buffImg5 = ImageIO.read(new File(MsbotConst.imageUrl + "bfb/a" + w + "5.png")); + List list = new ArrayList<>(); + for(Integer random : randomList) { + if(random<7550) { + list.add(NewImageUtils.resizeBufferedImage(buffImg1,90,90,false)); + }else if(random<7550+2124){ + list.add(NewImageUtils.resizeBufferedImage(buffImg2,90,90,false)); + }else if(random<7550+2124+300) { + list.add(NewImageUtils.resizeBufferedImage(buffImg3,90,90,false)); + }else if(random<7550+2124+300+20) { + list.add(NewImageUtils.resizeBufferedImage(buffImg4,90,90,false)); + }else { + list.add(NewImageUtils.resizeBufferedImage(buffImg5,90,90,false)); + } + } + + sourceFile = watermark(sourceFile, list.get(0) , 375, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(1) , 620, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(2) , 870, 410, 1.0f); + sourceFile = watermark(sourceFile, list.get(3) , 250, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(4) , 500, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(5) , 745, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(6) , 990, 610, 1.0f); + sourceFile = watermark(sourceFile, list.get(7) , 375, 805, 1.0f); + sourceFile = watermark(sourceFile, list.get(8) , 620, 805, 1.0f); + sourceFile = watermark(sourceFile, list.get(9) , 870, 805, 1.0f); + // buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); - // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 - BufferedImage newBufferedImage = new BufferedImage( - sourceFile.getWidth(), sourceFile.getHeight(), - BufferedImage.TYPE_INT_RGB); - newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, - Color.WHITE, null); - // write to jpeg file + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + sourceFile.getWidth(), sourceFile.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, + Color.WHITE, null); + // write to jpeg file // ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); - ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); - generateWaterFile(newBufferedImage, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; - } + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + } @Override - public String startDrawMs() throws Exception { + public String startDrawMs(MonvTime monvTime) throws Exception { + int prize_1=0; + int prize_2=0; + int prize_3=0; + int prize_4=0; + int prize_5=0; Random r = new Random(); HashSet randomList = new HashSet<>(); while (randomList.size() < 10) { @@ -1059,16 +651,36 @@ public String startDrawMs() throws Exception { for(Integer random : randomList) { if(random<7550) { list.add(NewImageUtils.resizeBufferedImage(buffImg1,90,90,false)); + prize_1=prize_1+1; }else if(random<7550+2124){ list.add(NewImageUtils.resizeBufferedImage(buffImg2,90,90,false)); + prize_2=prize_2+1; }else if(random<7550+2124+300) { list.add(NewImageUtils.resizeBufferedImage(buffImg3,90,90,false)); + prize_3=prize_3+1; }else if(random<7550+2124+300+20) { list.add(NewImageUtils.resizeBufferedImage(buffImg4,90,90,false)); + prize_4=prize_4+1; }else { list.add(NewImageUtils.resizeBufferedImage(buffImg5,90,90,false)); + prize_5=prize_5+1; } } + System.out.println(monvTime.getId()); + System.out.println(monvTime.getPrize_1()); + System.out.println(monvTime.getPrize_2()); + System.out.println(monvTime.getPrize_3()); + System.out.println(monvTime.getPrize_4()); + System.out.println(monvTime.getPrize_5()); + + monvTimeRepository.modifyUpdatePrize( + monvTime.getId(), + monvTime.getPrize_1()+prize_1, + monvTime.getPrize_2()+prize_2, + monvTime.getPrize_3()+prize_3, + monvTime.getPrize_4()+prize_4, + monvTime.getPrize_5()+prize_5 + ); sourceFile = watermark(sourceFile, list.get(0) , 375, 410, 1.0f); sourceFile = watermark(sourceFile, list.get(1) , 620, 410, 1.0f); @@ -1190,4 +802,308 @@ public String zbImage(String[] msg) throws Exception { return "[CQ:image,file=" + uuid +".jpg]"; } + @Override + public String drawRankImage(Map mapler) throws Exception { + //判断是否有经验数据 + @SuppressWarnings("unchecked") + List> gd = (List>) mapler.get("GraphData"); + String sourceFilePath = MsbotConst.imageUrl + "lm/background2.jpg"; + if(gd!=null&&gd.size()>1) { + sourceFilePath = MsbotConst.imageUrl + "lm/background1.jpg"; + } + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + BufferedImage sourceFile = ImageIO.read(new File(sourceFilePath)); + + String imageUrl = (String) mapler.get("CharacterImageURL"); + List images = new ArrayList<>(); + images.add(imageUrl); + BufferedImage imageImg = null; + if(imageUrl!=null) { + try { + String imageName = mvpImageService.saveTempImage(imageUrl); + imageImg = ImageIO.read(new File(MsbotConst.imageUrl + imageName)); +// imageImg = ImageIO.read(new File("D:\\go-cqhttp\\data\\images\\lm\\1.png")); + imageImg = NewImageUtils.mirrorImage(imageImg); + imageImg = NewImageUtils.resizeBufferedImage(imageImg, 200, 200, true); + sourceFile = watermark(sourceFile, imageImg , 75, 25, 1.0f); + } catch (Exception e) { + e.printStackTrace(); + } + } + + Graphics2D g = sourceFile.createGraphics(); + Font font = Loadfont2.Font(22); + g.setFont(font); + g.setColor(new Color(0,0,0)); + + int startX = 65; + int startY = 265; +// int intervalX = + int interval = 30; + + g.drawString("角色:" + mapler.get("Name"),startX,startY); + g.drawString("服务器:" + mapler.get("Server"),startX,startY+interval*2); + g.drawString("等级:" + mapler.get("Level") + " - " + mapler.get("EXPPercent") + "%",startX,startY+interval*4); + g.drawString("(排名" + mapler.get("ServerRank") + ")",startX,startY+interval*5); + g.drawString("职业:" + mapler.get("Class"),startX,startY+interval*6); + g.drawString("(排名" + mapler.get("ServerClassRanking") +")",startX,startY+interval*7); + + + if(mapler.get("LegionCoinsPerDay")==null) { + g.drawString("非联盟最高角色,无法查",startX,startY+interval*9); + g.drawString("询联盟信息",startX,startY+interval*10); + }else { + g.drawString("联盟等级:" + mapler.get("LegionLevel"),startX,startY+interval*8); + g.drawString("(排名" + mapler.get("LegionRank") +")",startX,startY+interval*9); + g.drawString("联盟战斗力:" + mapler.get("LegionPower"),startX,startY+interval*10); + g.drawString("(每天" + mapler.get("LegionCoinsPerDay") +"币)",startX,startY+interval*11); + } + + + startX = 425; + startY = 265; + + if(gd!=null) { + Long expYesterday = Long.parseLong("0"); + Long expLastWeek = Long.parseLong("0"); + Long totalOverallExp = Long.parseLong("0"); + Long maxExp = Long.parseLong("0"); + int count = 0; + Collections.reverse(gd); + //角色图 + try { + for(Map temp : gd) { + String avatar = temp.get("AvatarURL")+""; + if(!images.contains(avatar)) { + images.add(avatar); + } + } + if(images.size()==1) { + imageImg = NewImageUtils.mirrorImage(imageImg); + sourceFile = watermark(sourceFile, imageImg , 425, 25, 1.0f); + }else { + Random r = new Random(); + int a = r.nextInt(images.size()-1)+1; + imageUrl = images.get(a); + try { + String imageName = mvpImageService.saveTempImage(imageUrl); + imageImg = ImageIO.read(new File(MsbotConst.imageUrl + imageName)); + } catch (Exception e) { + imageImg = NewImageUtils.mirrorImage(imageImg); + } +// imageImg = ImageIO.read(new File("D:\\go-cqhttp\\data\\images\\lm\\1.png")); + imageImg = NewImageUtils.resizeBufferedImage(imageImg, 200, 200, true); + sourceFile = watermark(sourceFile, imageImg , 425, 25, 1.0f); + } + } catch (Exception e) { + System.out.println("角色2图加载失败"); + } + + //经验 + for(int i=0;i10000) { + exp2 = exp%10000/100; + exp = exp/10000; + expString = exp + "."+exp2+"w"; + if(exp>10000) { + exp2 = exp%10000/100; + exp = exp/10000; + expString = exp + "."+exp2+"e"; + if(exp>10000) { + exp2 = exp%10000/100; + exp = exp/10000; + expString = exp + "."+exp2+"t"; + } + } + } + g.drawString(gd.get(i).get("DateLabel") + ":" + expString,startX,startY); + startY = startY + 30; + count++; + }else { + break; + } + } + if(gd.size()>1) { + int nextLevel = nextLevel(Integer.parseInt(mapler.get("Level")+"")); + Long nextExp = nextLevelExp(nextLevel); + String day1 = null; + if(expYesterday==0l) { + day1 = "∞"; + }else { + day1 = (nextExp - totalOverallExp)/expYesterday + ""; + } + g.drawString("按照最近1天的进度,还需要"+day1+"天到达"+nextLevel+"级",startX,startY); + startY = startY + 30; + if(count>1) { + String day2 = null; + if(expLastWeek/count==0l) { + day2 = "∞"; + }else { + day2 = (nextExp - totalOverallExp)/(expLastWeek/count)+""; + } + g.drawString("按照最近"+count+"天的进度,还需要"+day2+"天到达"+nextLevel+"级",startX,startY); + startY = startY + 30; + } + if(nextLevel<300) { + nextExp = nextLevelExp(300); + String day3 = null; + if(maxExp==0l){ + day3 = "∞"; + }else { + day3 = (nextExp - totalOverallExp)/maxExp + ""; + } + + startY = startY + 30; + g.drawString("按照目前的进度,还需要"+day3+"天到达"+"300级",startX,startY); + + } + } + } + + + + //事件 + g.dispose(); + +// buffImg = resizeBufferedImage(buffImg,buffImg.getWidth()/2,buffImg.getHeight()/2,true); + // TYPE_INT_RGB:创建一个RBG图像,24位深度,成功将32位图转化成24位 + BufferedImage newBufferedImage = new BufferedImage( + sourceFile.getWidth(), sourceFile.getHeight(), + BufferedImage.TYPE_INT_RGB); + newBufferedImage.createGraphics().drawImage(sourceFile, 0, 0, + Color.WHITE, null); + // write to jpeg file +// ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl + "bfb/mn1.jpg")); + ImageIO.write(newBufferedImage, "jpg", new File(MsbotConst.imageUrl +uuid +".jpg")); + generateWaterFile(newBufferedImage, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; + + } + + @Override + public String getRankList(List richList, List poorList) throws Exception { + //画一个圆角矩形 +// g.drawRoundRect(10,10,150,70,40,25); + //涂一个圆角矩形块 +// g.fillRoundRect(80,100,150,70,60,40); + + //创建图片对象 + BufferedImage image = new BufferedImage(900, 400, BufferedImage.TYPE_INT_RGB); + Graphics2D g = image.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + Font font = Loadfont2.Font(22); + Font font2 = Loadfont2.Font(14); + g.setBackground(new Color(247,250,231)); + g.clearRect(0,0,image.getWidth(),image.getHeight()); + + g.setColor(new Color(230,245,252)); + g.fillRoundRect(33,20,400,360,40,25); + g.setColor(new Color(0,0,0)); + g.setFont(font); + g.drawString("排行榜", 180,50); + g.setFont(font2); + for(int i=0;i sendPrivateMsg(PrivateMsg privateMsg) { if(privateMsg!=null&&privateMsg.getMessage().contains("[CQ:image,file=")&&!privateMsg.getMessage().contains("url=http")&&!privateMsg.getMessage().contains(MsbotConst.imageUrl)) { @@ -53,7 +49,7 @@ public Result sendPrivateMsg(PrivateMsg privateMsg) { Result result = restTemplate.postForObject("http://127.0.0.1:5700/send_private_msg", privateMsg, Result.class); return result; } - + @Override public Result sendGroupMsg(GroupMsg groupMsg) { groupMsg.setMessage(groupMsg.getMessage().replaceAll("\\\\", "/")); @@ -61,33 +57,39 @@ public Result sendGroupMsg(GroupMsg groupMsg) { System.err.println(result.toString()); return result; } - + @Override public Result sendChannelMsg(ChannelReplyMsg channelReplyMsg) { channelReplyMsg.setMessage(channelReplyMsg.getMessage().replaceAll("\\\\", "/")); Result result = restTemplate.postForObject("http://127.0.0.1:5700/send_guild_channel_msg", channelReplyMsg, Result.class); - return result; + return result; + } + + @Override + public Result getGroupList() { + Result result = restTemplate.postForObject("http://127.0.0.1:5700/get_group_list", null, Result.class); + return result; } @Override public Result getGroupMember(GroupMsg groupMsg) { Result result = restTemplate.postForObject("http://127.0.0.1:5700/get_group_member_list", groupMsg, Result.class); - return result; + return result; } @Override public Result deleteMsg(HashMap map) { Result result = restTemplate.postForObject("http://127.0.0.1:5700/delete_msg", map, Result.class); - return result; + return result; } - + @Override public String tuLingMsg(String json) { restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); String result = restTemplate.postForObject("http://openapi.tuling123.com/openapi/api/v2", json, String.class); - return result; + return result; } - + @Override public String MoliMsg(String content,String user_id,String name) { HttpHeaders headers = new HttpHeaders(); @@ -109,7 +111,7 @@ public String MoliMsg(String content,String user_id,String name) { // (Map)JSON.parseObject(msg); return jsonObject.toString().replaceAll("\\\\n", "\r\n"); } - + @Override public String MoliMsg2(String content,String user_id,String name) { HttpHeaders headers = new HttpHeaders(); @@ -131,4 +133,4 @@ public String MoliMsg2(String content,String user_id,String name) { // (Map)JSON.parseObject(msg); return jsonObject.toString().replaceAll("\\\\n", "\r\n"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 7df6875..c669acf 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -1,7 +1,6 @@ package com.badeling.msbot.serviceImpl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.badeling.msbot.config.MsbotConst; import com.badeling.msbot.controller.MsgZbCalculate; @@ -27,6 +26,9 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @Component public class MsgServiceImpl implements MsgService{ @@ -65,8 +67,10 @@ public class MsgServiceImpl implements MsgService{ private RoleDmgRepository roleDmgRepository; @Autowired private PrivateService privateService; + @Autowired private WzXmlService wzXmlService; + @Autowired private MsgNoPrefixRepository msgNoPrefixRepository; @Autowired @@ -74,6 +78,21 @@ public class MsgServiceImpl implements MsgService{ @Autowired private BanTimeRepository banTimeRepository; + @Autowired + SellAndBuyRepository sellAndBuyRepository; + + @Autowired + GroupInfoRepository groupInfoRepository; + + @Autowired + MessageRepository messageRepository; + + @Autowired + ScoreRepository scoreRepository; + + @Autowired + GroupMemberRepository groupMemberRepository; + public static int[] starForceDesc(int level,int stat,int att,int star) { Map> starForceDataAfter16 = starForceDataAfter16(); Map map = starForceDataAfter16.get(level); @@ -246,32 +265,58 @@ public synchronized ReplyMsg receive(String msg) { GlobalVariable.setMsgList(msgList); - try { - if(msg.contains("message_type")) { + try { + if(msg.contains("message_type")) { if(msg.contains("\"channel_id\":")) { - channelService.receive(msg); - return null; - } - receiveMsg = new ObjectMapper().readValue(msg, ReceiveMsg.class); - }else if(msg.contains("\"notice_type\":\"group_increase\"")) { - NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); - return handWelcome(noticeMsg); - }else if(msg.contains("\"notice_type\":\"group_decrease\"")){ - System.err.println(msg); - NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); - return handLeave(noticeMsg); - }else { - return null; - } - } catch (IOException e) { - e.printStackTrace(); - } + channelService.receive(msg); + return null; + } + receiveMsg = new ObjectMapper().readValue(msg, ReceiveMsg.class); + }else if(msg.contains("\"notice_type\":\"group_increase\"")) { + NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); + return handWelcome(noticeMsg); + }else if(msg.contains("\"notice_type\":\"group_decrease\"")){ + System.err.println(msg); + NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); + return handLeave(noticeMsg); + }else if(msg.contains("\"notice_type\":\"group_card\"")) { + //修改群名片的事件 但目前使用的版本没有上传该事件 故暂时搁置 +// NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); +// return handModifyCard(noticeMsg); + return null; + }else { + return null; + } + } catch (IOException e) { + e.printStackTrace(); + } //私聊 //if(receiveMsg.getMessage_type().equals("private")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { // System.err.println(receiveMsg.toString()); // return handlePrivateMsg(receiveMsg); // } + //接收消息统计 + try { + int length = receiveMsg.getRaw_message().length(); + if(length>2000) { + length = 2000; + } + Message ms = new Message(); + ms.setGroup_id(receiveMsg.getGroup_id()); + ms.setUser_id(receiveMsg.getUser_id()); + ms.setRaw_message(receiveMsg.getRaw_message().substring(0,length)); + ms.setTime(System.currentTimeMillis()); + messageRepository.save(ms); + } catch (Exception e) { + e.printStackTrace(); + } + + //过滤自己的消息 、 统计自己的消息需设置report-self-message:true + if(receiveMsg.getUser_id()!=null&&receiveMsg.getUser_id().equals(receiveMsg.getSelf_id())) { + return null; + } + //黑名单的人 for(String temp : MsbotConst.blackList) { if(receiveMsg.getUser_id().equals(temp)) { @@ -416,6 +461,7 @@ public synchronized ReplyMsg receive(String msg) { } } + if (receiveMsg.getRaw_message().startsWith(MsbotConst.botName)) { System.out.println(receiveMsg.toString()); return handleNameMsg(receiveMsg); @@ -447,19 +493,21 @@ else if (receiveMsg.getRaw_message().length() >= 2 && receiveMsg.getRaw_message( return handTransMsg(receiveMsg); } else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message().startsWith("联盟查询")) { return handLegionRank(receiveMsg); - } - else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message().startsWith("查询绑定")) { + } else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message().startsWith("查询绑定")) { // 查询绑定badeling return handAddRankName(receiveMsg); + }else if(receiveMsg.getRaw_message().length()>=2&&receiveMsg.getRaw_message().contains("查成分")){ + return handMemberAtt(receiveMsg); } - //收币 or 卖币 -// Pattern r = Pattern.compile(".*\\d+[e|E|\\亿].*"); -// Matcher m = r.matcher(receiveMsg.getRaw_message()); -// boolean matches = m.matches(); -// if(matches) { -// handMemberSellAndBuy(receiveMsg); -// } + + //收币 or 卖币 + Pattern r = Pattern.compile(".*\\d+[e|E|\\亿].*"); + Matcher m = r.matcher(receiveMsg.getRaw_message()); + boolean matches = m.matches(); + if(matches) { + handMemberSellAndBuy(receiveMsg); + } handReplyMsg(receiveMsg); @@ -468,7 +516,180 @@ else if (receiveMsg.getRaw_message().length() >= 4 && receiveMsg.getRaw_message( return handRereadMsg(receiveMsg); } - + + private ReplyMsg handMemberAtt(ReceiveMsg receiveMsg) { + ReplyMsg replyMsg = new ReplyMsg(); + String findNumber = null; + + StringBuffer reply = new StringBuffer(); + if(receiveMsg.getRaw_message().contains("[CQ:at,qq=")) { + int aIndex = receiveMsg.getRaw_message().indexOf("[CQ:at,qq=")+10; + int bIndex = receiveMsg.getRaw_message().indexOf("]"); + findNumber = receiveMsg.getRaw_message().substring(aIndex,bIndex); + }else { + findNumber = receiveMsg.getUser_id(); + } + reply.append("[CQ:at,qq="); + reply.append(findNumber); + reply.append("]的成分查询结果如下:\r\n"); + + reply.append("入群时间:"); + List findGroupMemberInfo = groupMemberRepository.findGroupMemberInfo(receiveMsg.getGroup_id(), findNumber); + String join_time = findGroupMemberInfo.get(0).getJoin_time(); + String year = join_time.substring(0,4); + String month = join_time.substring(4,6); + String day = join_time.substring(6); + if(month.startsWith("0")) { + month = month.substring(1); + } + if(day.startsWith("0")) { + day = day.substring(1); + } + reply.append((year+"年"+month+"月"+day+"日")); + + List findScoreById = scoreRepository.findScoreById(findNumber, receiveMsg.getGroup_id()); + int lastweek_score = 0; + int total_score = 0; + for(Score s : findScoreById) { + total_score = total_score + s.getScore(); + if(s.getTime()!=99999999) { + lastweek_score = lastweek_score + s.getScore(); + } + } + reply.append("\r\n近期活跃度:"); + reply.append(lastweek_score); + reply.append("\r\n累计活跃度:"); + reply.append(total_score); + if(total_score<0||lastweek_score<0) { + reply.append("\r\n------------\r\n一眼咩啊,鉴定为内鬼"); + } + replyMsg.setReply(reply.toString()); + return replyMsg; + } + + @SuppressWarnings("unused") + private ReplyMsg handModifyCard(NoticeMsg noticeMsg) { + ReplyMsg replyMsg = new ReplyMsg(); + replyMsg.setReply("[sandbox]" + noticeMsg.getCard_old()+" -> "+noticeMsg.getCard_new()); + return replyMsg; + } + + private void handMemberSellAndBuy(ReceiveMsg receiveMsg) { + String temp = receiveMsg.getRaw_message(); + Pattern r = Pattern.compile(".*\\d+.*[出].*\\d+[e|E|\\亿].*"); + Matcher m = r.matcher(receiveMsg.getRaw_message()); + boolean matches = m.matches(); + r = Pattern.compile(".*[收].*\\d+[e|E|\\亿].*"); + m = r.matcher(receiveMsg.getRaw_message()); + boolean matches2 = m.matches(); + try { + if(temp.length()<30&&!temp.contains("突破")&&!temp.contains("上限")) { + if(matches) { + handMemberSellAndBuy2(receiveMsg,"sell"); + }else if(matches2) { + handMemberSellAndBuy2(receiveMsg,"buy"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + + } + + private void handMemberSellAndBuy2(ReceiveMsg receiveMsg, String type) throws Exception { + //存储收售信息 + SellAndBuy sab = new SellAndBuy(); + sab.setGroup_id(receiveMsg.getGroup_id()); + sab.setType(type); + sab.setUser_id(receiveMsg.getUser_id()); + String name = receiveMsg.getSender().getCard(); + if(name==null||name.isEmpty()) { + name = receiveMsg.getSender().getNickname(); + } + sab.setUser_name(name); + sab.setGoods(receiveMsg.getRaw_message()); + sab.setTime(System.currentTimeMillis()+""); + SellAndBuy sab2 = sellAndBuyRepository.findUserByIdAndType(sab.getUser_id(), sab.getType()); + if(sab2!=null) { + sellAndBuyRepository.deleteById(sab2.getId()); + } + sellAndBuyRepository.save(sab); + + String type2 = ""; + if(type.equals("sell")) { + type2 = "buy"; + }else { + type2 = "sell"; + } + //读取已有收售信息 + List sabList = sellAndBuyRepository.findSabByType(type2); + if(sabList.size()>0) { + //list排序 按时间排序 家族分类 + List> totList = new ArrayList<>(); + Map map = new HashMap<>(); + //自己家族排最前 + map.put(receiveMsg.getGroup_id(), 0); + List own = new ArrayList<>(); + totList.add(own); + int point = 1; + for(SellAndBuy sabTemp : sabList) { + Integer integer = map.get(sabTemp.getGroup_id()); + if(integer==null) { + map.put(sabTemp.getGroup_id(), point); + integer = point; + List list = new ArrayList<>(); + totList.add(list); + point++; + } + List list = totList.get(integer); + list.add(sabTemp); + totList.set(integer, list); + } + +// 读取家族列表 + Iterable findAll = groupInfoRepository.findAll(); + Map groupList = new HashMap<>(); + for(GroupInfo gi : findAll) { + if(gi.getGroup_memo()==null||gi.getGroup_id().isEmpty()||gi.getGroup_memo().equals("null")) { + groupList.put(gi.getGroup_id(), gi.getGroup_name()); + }else { + groupList.put(gi.getGroup_id(), gi.getGroup_memo()); + } + + } +// 家族 角色名 出 xxx 游戏币 xx分钟/小时前 + StringBuffer result = new StringBuffer(); + result.append("[CQ:at,qq=").append(receiveMsg.getUser_id()).append("]"); + long currentTimeMillis = System.currentTimeMillis(); + for(List sabTempList : totList) { + if(sabTempList.size()>0) { + result.append("\r\n").append("【").append(groupList.get(sabTempList.get(0).getGroup_id())).append("】"); + for(SellAndBuy sabTemp : sabTempList) { + long time = (currentTimeMillis - Long.parseLong(sabTemp.getTime()))/1000/60; + String time2 = ""; + if(time<60) { + time2 = time + "分钟前"; + }else if(time<1440) { + time2 = time/60 + "小时前"; + }else { + time2 = "1天前"; + } + result.append("\r\n").append(sabTemp.getUser_name()).append(":").append(sabTemp.getGoods()) + .append(" ").append(time2); + } + } + } + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setAuto_escape(false); + groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + groupMsg.setMessage(result.toString()); +// groupMsg.setGroup_id(Long.parseLong(GroupIdConst.GroupTest1)); + groupMsgService.sendGroupMsg(groupMsg); + } + + } + private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { //识图 String[] result = mvpImageService.handHigherImageMsg(receiveMsg); @@ -484,8 +705,14 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { int count = list.size(); for(int i=0;i qozList = quizOzQuestionRepository.findAllQoz(); System.out.println("原始信息:"+raw_message); reply = raw_message + "\r\n"; @@ -498,47 +725,65 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { i = result2; } } + + while(!reply.isEmpty()&&reply.startsWith(" ")) { + reply = reply.substring(1); + } + reply = reply + "MatchQue : "+MatchQoz.getQuestion()+"\r\n \r\n"; - String a = list.get(count-4).get("words").replaceAll(" ", " ").replaceAll(" ", " "); - String b = list.get(count-3).get("words").replaceAll(" ", " ").replaceAll(" ", " "); - String c = list.get(count-2).get("words").replaceAll(" ", " ").replaceAll(" ", " "); - String d = list.get(count-1).get("words").replaceAll(" ", " ").replaceAll(" ", " "); +// String a = list.get(count-4).get("words").replaceAll(" ", " ").replaceAll(" ", " "); +// String b = list.get(count-3).get("words").replaceAll(" ", " ").replaceAll(" ", " "); +// String c = list.get(count-2).get("words").replaceAll(" ", " ").replaceAll(" ", " "); +// String d = list.get(count-1).get("words").replaceAll(" ", " ").replaceAll(" ", " "); Set answers = MatchQoz.getAnswers(); - Iterator iterator = answers.iterator(); - reply = reply + "所有答案 : "; + //排序 + List answer_list = new ArrayList<>(); + for(QuizOzAnswer temp : answers) { + answer_list.add(temp.getAnswer()); + } + Collections.sort(answer_list); int k = 16; - QuizOzAnswer MatchQoa = null; - while(iterator.hasNext()) { - QuizOzAnswer next = iterator.next(); - reply = reply + next.getAnswer(); - if(iterator.hasNext()) { + String matchQoa = null; + for(int j=0;j temp : list) { + String a = temp.get("words").replaceAll(" ", " ").replaceAll(" ", " "); + int compare = getResult(answer,a); + if(compare<=k) { + k=compare; + matchQoa = answer; + } } + +// if(getResult(next.getAnswer(),a)<=k) { +// k=getResult(next.getAnswer(),a); +// MatchQoa = next; +// } +// if(getResult(next.getAnswer(),b)<=k) { +// k=getResult(next.getAnswer(),b); +// MatchQoa = next; +// } +// if(getResult(next.getAnswer(),c)<=k) { +// k=getResult(next.getAnswer(),c); +// MatchQoa = next; +// } +// if(getResult(next.getAnswer(),d)<=k) { +// k=getResult(next.getAnswer(),d); +// MatchQoa = next; +// } } - reply = reply + "匹配答案 : " + MatchQoa.getAnswer() + "\r\n"; + reply = reply + "匹配答案 : " + matchQoa + "\r\n"; ReplyMsg replyMsg = new ReplyMsg(); replyMsg.setReply(reply); return replyMsg; @@ -548,8 +793,7 @@ private ReplyMsg handRecognizeOz39(ReceiveMsg receiveMsg) { replyMsg.setReply("出现了一个意料之外的问题"); return replyMsg; } - } - + } // handAddRankName private ReplyMsg handAddRankName(ReceiveMsg receiveMsg) { ReplyMsg replyMsg = new ReplyMsg(); @@ -639,7 +883,8 @@ private void handReplyMsg(ReceiveMsg receiveMsg) { } } } - + + @SuppressWarnings("unused") private ReplyMsg handlePrivateMsg(ReceiveMsg receiveMsg) { if(receiveMsg.getRaw_message().length()>=2&&receiveMsg.getRaw_message().substring(0,2).contains(MsbotConst.botName)) { @@ -648,19 +893,19 @@ private ReplyMsg handlePrivateMsg(ReceiveMsg receiveMsg) { ReplyMsg replyMsg = privateService.handlePrivateMsg(receiveMsg); return replyMsg; } - - private ReplyMsg handRecognize3(ReceiveMsg receiveMsg) { + + private ReplyMsg handRecognize2(ReceiveMsg receiveMsg) { //识图 String[] result = mvpImageService.handHigherImageMsg(receiveMsg); //接受数据 - String raw_message = ""; + String raw_message = "高精度识图结果:\r\n"; try { @SuppressWarnings("unchecked") Map backMessage = (Map) JSONObject.parse(result[0]); @SuppressWarnings("unchecked") List> list = (List>) backMessage.get("words_result"); for(Map a : list) { - raw_message = raw_message + a.get("words"); + raw_message = raw_message + a.get("words")+"\r\n"; } } catch (Exception e) { e.printStackTrace(); @@ -669,30 +914,8 @@ private ReplyMsg handRecognize3(ReceiveMsg receiveMsg) { ReplyMsg replyMsg = new ReplyMsg(); replyMsg.setReply(raw_message); return replyMsg; -} - - private ReplyMsg handRecognize2(ReceiveMsg receiveMsg) { - //识图 - String[] result = mvpImageService.handHigherImageMsg(receiveMsg); - //接受数据 - String raw_message = "高精度识图结果:\r\n"; - try { - @SuppressWarnings("unchecked") - Map backMessage = (Map) JSONObject.parse(result[0]); - @SuppressWarnings("unchecked") - List> list = (List>) backMessage.get("words_result"); - for(Map a : list) { - raw_message = raw_message + a.get("words")+"\r\n"; - } - } catch (Exception e) { - e.printStackTrace(); - return null; - } - ReplyMsg replyMsg = new ReplyMsg(); - replyMsg.setReply(raw_message); - return replyMsg; } - + private ReplyMsg handRereadMsg(ReceiveMsg receiveMsg) { // receiveMsg.getRaw_message().contains("[CQ:image,file=") HashMap map = ReRead.getMap(); @@ -888,6 +1111,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return null; } + //查成分 + if(raw_message.contains(MsbotConst.botName+"查成分")) { + return handMemberAtt(receiveMsg); + } + //说 if(raw_message.contains(MsbotConst.botName+"说")){ raw_message = raw_message.substring(raw_message.indexOf("说")+1); @@ -1238,7 +1466,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } - //怪物查询 if(raw_message.startsWith(MsbotConst.botName+"怪物")||raw_message.startsWith(MsbotConst.botName+" 怪物")) { if(raw_message.equals(MsbotConst.botName+"怪物")||raw_message.equals(MsbotConst.botName+" 怪物")) { @@ -1277,6 +1504,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } } + //测试字体 if(raw_message.startsWith(MsbotConst.botName+"测试字体")) { try { @@ -1358,11 +1586,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { //设置QQ号 roleDmg.setUser_id(receiveMsg.getSender().getUser_id()); //设置群号 - if(receiveMsg.getGroup_id().contains("101577006")) { - roleDmg.setGroup_id("398359236"); - }else { - roleDmg.setGroup_id(receiveMsg.getGroup_id()); - } + roleDmg.setGroup_id(receiveMsg.getGroup_id()); roleDmg.setCommonDmg(100); roleDmg.setBossDmg(200); roleDmgRepository.save(roleDmg); @@ -1381,7 +1605,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyM += "角色数据 伤害:" + roleDmg.getCommonDmg() + "% boss:" + roleDmg.getBossDmg() + "%\r\n(括号为核心20%无视加成结果)\r\n"; replyM += "//----超高防对比-----//\r\n"; - replyM += "塞伦提升率(380超高防):" + String.format("%.2f", (defAndign(380, ign)/defAndign(380, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*100) + "%)\r\n"; + replyM += "卡琳提升率(380超高防):" + String.format("%.2f", (defAndign(380, ign)/defAndign(380, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*100) + "%)\r\n"; replyM += "原伤害" + defAndign(380, ign_before) + "%(" + defAndign(380, ign_before2) + "%)\r\n"; replyM += "现伤害" + defAndign(380, ign) + "%(" + defAndign(380, ign2) + "%)\r\n"; replyM += "相当于提升了" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害\r\n"; @@ -1420,6 +1644,17 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } + if(raw_message.contains("无视")){ + String reply = "//无视加算\r\n" + + MsbotConst.botName + " 无视 70+50+20\r\n" + + "//无视逆运算\r\n" + + MsbotConst.botName+ " 无视 90-50\r\n" + + "//修改角色属性数据\r\n" + + MsbotConst.botName+ " 伤害50 boss250"; + replyMsg.setReply(reply); + return replyMsg; + } + //复读机周报 if(raw_message.contains("复读机周报")) { //得到群成员信息 @@ -1477,6 +1712,46 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } + //退群人员查询 + if(raw_message.contains("谁")&&raw_message.contains("退群")) { + Long time = System.currentTimeMillis()-24*60*60*1000; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + List findLeaveMemberList = groupMemberRepository.findLeaveMemberInfo(receiveMsg.getGroup_id(), Integer.parseInt(sdf.format(time))); + if(findLeaveMemberList==null||findLeaveMemberList.isEmpty()) { + replyMsg.setReply("好像没有人退群呀"); + replyMsg.setAt_sender(false); + return replyMsg; + }else { + String reply = ""; + for(GroupMember temp : findLeaveMemberList) { + String leave_time = temp.getLeave_time(); + if(!reply.contains(leave_time+":")) { + if(reply.isEmpty()) { + reply = reply + leave_time+":"; + }else { + reply = reply + "\r\n" + leave_time+":"; + } + } + + if(temp.getCard()!=null&&!temp.getCard().isEmpty()) { + reply = reply + "\r\n" + temp.getCard(); + }else { + reply = reply + "\r\n" + temp.getNickname(); + } + List findScoreById = scoreRepository.findScoreById(temp.getUser_id(), receiveMsg.getGroup_id()); + int score = 0; + for(Score s : findScoreById) { + score = score + s.getScore(); + } + reply = reply + " - " + score; + } + replyMsg.setReply(reply); + replyMsg.setAt_sender(false); + return replyMsg; + } + + } + //测试接口 if(raw_message.startsWith(MsbotConst.botName+"跟我读")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { @@ -1485,6 +1760,61 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } + if(raw_message.contains("排行榜")) { + List rankingList = scoreRepository.getRankingList(receiveMsg.getGroup_id()); + List findGroupMemberByGroup = groupMemberRepository.findGroupMemberByGroup(receiveMsg.getGroup_id()); + List richList = new ArrayList(); + List poorList = new ArrayList(); + Map map = new HashMap(); + for(GroupMember gm : findGroupMemberByGroup) { + if(gm.getCard()!=null&&!gm.getCard().isEmpty()) { + map.put(gm.getUser_id(), gm.getCard()); + }else if(gm.getNickname()!=null){ + map.put(gm.getUser_id(), gm.getNickname()); + }else { + map.put(gm.getUser_id(), "null"); + } + } + + int count = 0; + for(Object[] obj : rankingList) { + String user_id = String.valueOf(obj[0]);//user_id + String score = String.valueOf(obj[1]);//score + String name = "unknown"; + if(Integer.parseInt(score)<=0||count>10) { + break; + } + if(map.containsKey(user_id)) { + name = map.get(user_id); + } + richList.add(name+" : "+score); + count++; + } + + Collections.reverse(rankingList); + count = 0; + for(Object[] obj : rankingList) { + String user_id = String.valueOf(obj[0]);//user_id + String score = String.valueOf(obj[1]);//score + String name = "unknown"; + if(Integer.parseInt(score)>=0||count>10) { + break; + } + if(map.containsKey(user_id)) { + name = map.get(user_id); + } + poorList.add(name+" : "+score); + count++; + } + + try { + String reply = drawService.getRankList(richList,poorList); + replyMsg.setReply(reply); + return replyMsg; + } catch (Exception e) { + e.printStackTrace(); + } + } //扔xxx if(raw_message.startsWith(MsbotConst.botName+"扔")&&raw_message.contains("[CQ:at")) { @@ -1498,7 +1828,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } String throwSomeone = ""; - if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals("2419570484")) { + if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(MsbotConst.botId)||findNumber.equals(receiveMsg.getSelf_id())) { String saveTempImage = mvpImageService.saveTempImage("http://q1.qlogo.cn/g?b=qq&nk=" + receiveMsg.getUser_id() + "&s=3"); throwSomeone = drawService.throwSomeone(saveTempImage); replyMsg.setAt_sender(false); @@ -1532,14 +1862,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } */ if(raw_message.contains("级")&&raw_message.contains("星")&&raw_message.contains("攻")) { - raw_message = raw_message.replaceAll(" ", "").substring(2); + raw_message = raw_message.replaceAll(" ", "").substring(MsbotConst.botName.length()); int level = Integer.parseInt(raw_message.substring(0,raw_message.indexOf("级"))); -// int stat = Integer.parseInt(split[2].substring(4)); int stat = 0; -// int fireStat = Integer.parseInt(split[3].substring(5)); int fireStat = 0; int att = Integer.parseInt(raw_message.substring(raw_message.indexOf("星")+1,raw_message.indexOf("攻"))); -// int fireAtt = Integer.parseInt(split[5].substring(5)); int fireAtt = 0; int nowStar = Integer.parseInt(raw_message.substring(raw_message.indexOf("级")+1,raw_message.indexOf("星"))); @@ -1557,49 +1884,25 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } int[] starForce = starForceDesc(level,stat-fireStat,att-fireAtt,nowStar); -// int finalStat = starForce[0]+fireStat; int finalAtt = starForce[1]+fireAtt; -// String result = "数据:等级"+level+" 主属" + stat + " 火花主属" + fireStat + "\r\n" -// + "攻击" + att + " 火花攻击" + fireAtt + " 星星" + nowStar + "\r\n" -// + "逆推星星结果为:\r\n" -// + "计算火花:主属" + finalStat + " 攻击"+ finalAtt + "\r\n" -// + "不计算火花:主属" + starForce[0] + " 攻击"+ starForce[1]; String result = "0星状态下满卷攻击为:" + finalAtt; replyMsg.setReply(result); return replyMsg; } - //正推星星 if(raw_message.contains("级")&&raw_message.contains("星")) { - raw_message = raw_message.replaceAll(" ", "").substring(2); - //level 130 140 150 160 200 - //蠢猫武器160 - //星星武器[等级][主属][火花主属][总攻击][火花攻击][当前星星][目标星星] + raw_message = raw_message.replaceAll(" ", "").substring(MsbotConst.botName.length()); /** - 正推星星 - 等级: - 类型: - 总主属: - 火花主属: - 总攻击: - 火花攻击: - 当前星星: - 目标星星: - - 蠢猫 150级16星 - */ + 正推星星 + 蠢猫 150级16星 + */ boolean isWeapon = false; int level = Integer.parseInt(raw_message.substring(0,raw_message.indexOf("级"))); -// int stat = Integer.parseInt(split[3].substring(4)); int stat = 0; -// int fireStat = Integer.parseInt(split[4].substring(5)); int fireStat = 0; -// int att = Integer.parseInt(split[5].substring(4)); int att = 0; -// int fireAtt = Integer.parseInt(split[6].substring(5)); int fireAtt = 0; -// int nowStar = Integer.parseInt(split[7].substring(5)); int nowStar = 0; int targetStar = Integer.parseInt(raw_message.substring(raw_message.indexOf("级")+1,raw_message.indexOf("星"))); if(level!=130&&level!=140&&level!=150&&level!=160&&level!=200) { @@ -1621,22 +1924,27 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { int[] starForce = starForce(level,stat-fireStat,att-fireAtt,nowStar,targetStar,isWeapon); int finalStat = starForce[0]+fireStat; int finalAtt = starForce[1]+fireAtt; -// String result = "数据:等级"+level+" 主属" + stat + " 火花主属" + fireStat + "\r\n" -// + "攻击" + att + " 火花攻击" + fireAtt + "\r\n" -// + "当前星星" + nowStar + " 目标星星" + targetStar + "\r\n" -// + "计算星星结果为:\r\n" -// + "计算火花:主属" + finalStat + " 攻击"+ finalAtt + "\r\n" -// + "不计算火花:主属" + starForce[0] + " 攻击"+ starForce[1]; String result = level + "级装备" + targetStar + "星的加成为:主属" + finalStat + " 攻击"+ finalAtt; replyMsg.setReply(result); return replyMsg; } } catch (Exception e) { - replyMsg.setReply("输入数据异常\r\n防具正推:蠢猫[等级][星星]\r\n" + - "eg:蠢猫150级17星\r\n" + - "武器逆推:蠢猫[等级][星星][攻击]\r\n" + - "eg:蠢猫160级13星428攻"); + replyMsg.setReply("输入数据异常\r\n防具正推:" + MsbotConst.botName + "[等级][星星]\r\n" + + "eg:" + MsbotConst.botName + "150级17星\r\n" + + "武器逆推:"+ MsbotConst.botName + "[等级][星星][攻击]\r\n" + + "eg:" + MsbotConst.botName + "160级13星428攻"); + return replyMsg; + } + + if(receiveMsg.getRaw_message().contains("星之力")||receiveMsg.getRaw_message().contains("星星")) { + replyMsg.setReply("为方便计算星之力属性,有 防具正推和武器逆推两种功能\r\n防具正推:" + MsbotConst.botName + "[等级][星星]\r\n" + + "eg:" + MsbotConst.botName + "150级17星\r\n" + + "武器逆推:"+ MsbotConst.botName + "[等级][星星][攻击]\r\n" + + "eg:" + MsbotConst.botName + "160级13星428攻\r\n" + + "注:1、武器攻击为 总攻击 - 火花,结果为满卷0星状态下的属性\r\n" + + "2、目前只支持130 140 150 160 200级装备计算。\r\n" + + "3、目前支持0-25星计算,不支持蓝星、极真、降星装备计算。"); return replyMsg; } @@ -1651,7 +1959,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply("[CQ:image,file=img/buzhidao5.jpg]"); return replyMsg; } - if(findNumber.equals(MsbotConst.masterId)||findNumber.equals("2419570484")) { + if(findNumber.equals(MsbotConst.masterId)||findNumber.equals(receiveMsg.getSelf_id())) { replyMsg.setAt_sender(true); String saveTempImage = mvpImageService.saveTempImage("http://q1.qlogo.cn/g?b=qq&nk=" + receiveMsg.getUser_id() + "&s=3"); String throwSomeone = drawService.pouchSomeone(saveTempImage); @@ -1705,44 +2013,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setReply(mes); return replyMsg; } - if(raw_message.startsWith(MsbotConst.botName+"查成分")){ - String url = "http://127.0.0.1:5700/get_group_member_info"; - JSONObject postData = new JSONObject(); - postData.put("group_id",receiveMsg.getGroup_id()); - postData.put("user_id",receiveMsg.getUser_id()); - postData.put("no_cache",false); - RestTemplate client = new RestTemplate(); - JSONObject json = client.postForEntity(url, postData, JSONObject.class).getBody(); - //System.out.println("json:"+json); - - JSONObject data = json.getObject("data",JSONObject.class); - //System.out.println("data:"+data); - JSONArray talkative_list = data.getJSONArray("talkative_list"); - String description=""; - int hot_num = 0; - for (int i=0;i=100 && hot_num<500){mes +="\r\n你很懒惰,请积极发言~";} - else if(hot_num>=500&&hot_num<1000){ mes +="\r\n你很活跃,请继续努力~"; } - else if (hot_num>=1000){mes +="\r\n你住群里了吧???";} - else {mes += "\r\n别潜水行不行???";} - replyMsg.setAt_sender(true); - replyMsg.setReply(mes); - return replyMsg; - - } if(raw_message.startsWith(MsbotConst.botName+"结账")){ if (raw_message.contains("[CQ:at")){ @@ -2168,62 +2438,6 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } -/** - * 这一段代码本来是因为最近周日冒险岛没加索引 所以添加一个新从首页查询 再搜索查询 - * 但是我写完之后发现周日冒险岛从首页挤出去了 现在首页也找不到 - * 所以先放在这 - */ - -// //官网首页找 -// try { -// String url = "http://mxd.web.sdo.com/web6/home/index.asp"; -// Document doc = Jsoup.connect(url).get(); -// Elements eleList = doc.select("div.news-list"); -// -// for(Element element : eleList) { -// Elements elementsByTag2 = element.getElementsByTag("li"); -// for(Element tempElement : elementsByTag2) { -// System.out.println(tempElement.text()); -// if(tempElement.text().contains("转蛋")) { -// Element first = tempElement.getElementsByAttribute("href").first(); -// url = first.attr("href").replaceAll("&", "&"); -// -// if(url.startsWith("..")) { -// url = "http://mxd.sdo.com/web6" + url.substring(2); -// } -// url = "http://mxd.sdo.com/web6" + element.getElementsByAttribute("href").first().attr("href").replaceAll("&", "&").substring(2); -// Document doc2 = Jsoup.connect(url).get(); -// -// Element ele1 = doc2.getElementsByClass("innerTitle").first(); -// Element ele2 = doc2.getElementsByClass("innerText").first(); -// String message = ""; -// for(Element temp : ele1.children()) { -// message = message + temp.text() + "\r\n"; -// } -//// message = message + "官网链接:" + url + "\r\n"; -// if(ele2.text().length()>100) { -// message = message + ele2.text().substring(0,100)+"..."; -// }else { -// message = message + ele2.text(); -// } -// -// if(ele2.getElementsByTag("img").toString().length()>0) { -// Elements elementsByTag = ele2.getElementsByTag("img"); -// for(Element temp : elementsByTag) { -// String imageUrl = mvpImageService.saveTempImage(temp.attr("src")); -// message = message + "[CQ:image,file="+imageUrl+"]"; -// } -// -// } -// System.out.println(message); -// replyMsg.setReply(message); -// return replyMsg; -// } -// } -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } //搜索页面找 String url = "http://mxd.sdo.com/web6/news/newsList.asp?wd=" + raw_message +"&CategoryID=a"; @@ -2234,13 +2448,13 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { url = "http://mxd.sdo.com/web6" + element.getElementsByAttribute("href").first().attr("href").replaceAll("&", "&").substring(2); Document doc2 = Jsoup.connect(url).get(); - Element ele1 = doc2.getElementsByClass("innerTitle").first(); +// Element ele1 = doc2.getElementsByClass("innerTitle").first(); Element ele2 = doc2.getElementsByClass("innerText").first(); String message = ""; - for(Element temp : ele1.children()) { - message = message + temp.text() + "\r\n"; - } - message = message + "官网链接:" + url + "\r\n"; +// for(Element temp : ele1.children()) { +// message = message + temp.text() + "\r\n"; +// } +// message = message + "官网链接:" + url + "\r\n"; if(ele2.text().length()>100) { message = message + ele2.text().substring(0,100)+"..."; }else { @@ -2253,6 +2467,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { message = message + "[CQ:image,file="+imageUrl+"]"; } } + replyMsg.setAt_sender(false); replyMsg.setReply(message); return replyMsg; } catch (Exception e) { @@ -2692,6 +2907,31 @@ private ReplyMsg handLeave(NoticeMsg noticeMsg) { if(!noticeMsg.getSub_type().equals("leave")) { return null; } + + String group_id = noticeMsg.getGroup_id(); + String user_id = noticeMsg.getUser_id(); + + try { + List findGroupMemberInfo = groupMemberRepository.findGroupMemberInfo(group_id, user_id); + if(findGroupMemberInfo!=null&&findGroupMemberInfo.size()>0) { + boolean isModify = false; + for(GroupMember temp : findGroupMemberInfo) { + //判定重复信息 保留第一条 删除其他的 + if(!isModify) { + Long time = System.currentTimeMillis(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String leave_time = sdf.format(time); + groupMemberRepository.modifyMemberLeaveTime(temp.getId(), leave_time); + isModify = true; + }else { + groupMemberRepository.delete(temp); + } + } + } + } catch (Exception e) { + System.out.println("退群成员表修改失败"); + } + GroupMsg groupMsg = new GroupMsg(); groupMsg.setAuto_escape(false); groupMsg.setGroup_id(Long.parseLong(noticeMsg.getGroup_id())); @@ -2708,9 +2948,52 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { return null; } -// GroupMsg groupMsg = new GroupMsg(); -// String message = ""; + + String group_id = noticeMsg.getGroup_id(); + String user_id = noticeMsg.getUser_id(); + + try { + List findGroupMemberInfo = groupMemberRepository.findGroupMemberInfo(group_id, user_id); + if(findGroupMemberInfo!=null&&findGroupMemberInfo.size()>0) { + groupMemberRepository.deleteAll(findGroupMemberInfo); + } + + //懒得找单个查询的接口了 先直接拉取群列表的消息 后期如果空闲了再改 + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(group_id)); + Result groupMemberList = groupMsgService.getGroupMember(groupMsg); + @SuppressWarnings("unchecked") + List> data = (List>) groupMemberList.getData(); + String nickname = ""; + String card = ""; + for(Map map : data) { + if(String.valueOf(map.get("user_id")).equals(user_id)) { + nickname = String.valueOf(map.get("nickname")); + card = String.valueOf(map.get("card")); + break; + } + } + + Long time = System.currentTimeMillis(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String join_time = sdf.format(time); + GroupMember groupMember = new GroupMember(); + groupMember.setCard(card); + groupMember.setGroup_id(group_id); + groupMember.setJoin_time(join_time); + groupMember.setLeave_time(null); + groupMember.setNickname(nickname); + groupMember.setUser_id(user_id); + groupMemberRepository.save(groupMember); + } catch (Exception e) { + System.out.println("添加新成员信息失败"); + } + //添加新成员 + Map newGuyList = GlobalVariable.getNewFriendsMap(); + newGuyList.put(noticeMsg.getUser_id()+"-"+noticeMsg.getGroup_id(),System.currentTimeMillis()+1000*60*5); + GlobalVariable.setNewFriendsMap(newGuyList); + //固定回复welcome Random r = new Random(); List msgList = msgRepository.findMsgByExtQuestion("固定回复welcome"); @@ -2727,7 +3010,6 @@ private ReplyMsg handWelcome(NoticeMsg noticeMsg) { gm.setGroup_id(Long.parseLong(noticeMsg.getGroup_id())); groupMsgService.sendGroupMsg(gm); - return null; } diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java index eae9f8b..f284d87 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MvpImageServiceImpl.java @@ -175,6 +175,7 @@ public static String getAuth(String ak, String sk) { Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { + @SuppressWarnings("unused") String object = key + "--->" + map.get(key); } // 定义 BufferedReader输入流来读取URL的响应 diff --git a/src/main/java/com/badeling/msbot/serviceImpl/RankServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/RankServiceImpl.java index 94d7872..1f06dce 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/RankServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/RankServiceImpl.java @@ -1,250 +1,57 @@ package com.badeling.msbot.serviceImpl; -import java.awt.Color; -import java.awt.Font; +import com.alibaba.fastjson.JSONObject; +import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.service.DrawService; +import com.badeling.msbot.service.MvpImageService; +import com.badeling.msbot.service.RankService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + import java.io.BufferedReader; -import java.io.File; import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.InetSocketAddress; -import java.net.Proxy; import java.net.URL; import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; import java.util.Map; -import org.jfree.chart.ChartFactory; -import org.jfree.chart.ChartUtilities; -import org.jfree.chart.JFreeChart; -import org.jfree.chart.axis.NumberAxis; -import org.jfree.chart.axis.ValueAxis; -import org.jfree.chart.plot.PlotOrientation; -import org.jfree.chart.plot.XYPlot; -import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; -import org.jfree.data.xy.XYSeries; -import org.jfree.data.xy.XYSeriesCollection; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.alibaba.fastjson.JSONObject; -import com.badeling.msbot.config.MsbotConst; -import com.badeling.msbot.service.MvpImageService; -import com.badeling.msbot.service.RankService; -import com.badeling.msbot.util.Loadfont2; - @Component public class RankServiceImpl implements RankService{ @Autowired MvpImageService mvpImageService; - + + @Autowired + DrawService drawService; + @Override public String getRank(String raw_message) { raw_message = raw_message.replace(MsbotConst.botName, ""); raw_message = raw_message.replace("联盟", ""); raw_message = raw_message.replace(" ", ""); - String imageUrl; String url = "https://api.maplestory.gg/v1/public/character/gms/" + raw_message; - String message = ""; - - try { - StringBuilder json = new StringBuilder(); - URL urlObject = new URL(url); - URLConnection uc = urlObject.openConnection(); - uc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); - BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(),"UTF-8")); - String inputLine = null; - while ( (inputLine = in.readLine()) != null) { - json.append(inputLine); - } - in.close(); - - @SuppressWarnings("unchecked") - Map mapler = (Map) JSONObject.parse(json.toString()); - - -// m.setLegionCoinsPerDay(getJson(jsonData,"LegionCoinsPerDay")); -// m.setLegionLevel(getJson(jsonData,"LegionLevel")); -// m.setLegionPower(getJson(jsonData,"LegionPower")); -// m.setLegionRank(getJson(jsonData,"LegionRank")); - imageUrl = (String) mapler.get("CharacterImageURL"); - - message = message + "角色:" + mapler.get("Name") + "\r\n" - + "服务器:" + mapler.get("Server") + "\r\n" - + "等级:" + mapler.get("Level") + " - " + mapler.get("EXPPercent") + "% (排名" + mapler.get("ServerRank") + ")\r\n" - + "职业:" + mapler.get("Class") + " (排名" + mapler.get("ServerClassRanking") +")\r\n"; - if(mapler.get("LegionCoinsPerDay")==null) { - message = message + "非联盟最高角色,无法查询联盟信息"; - }else { - message = message + "联盟等级:" + mapler.get("LegionLevel") + " (排名" + mapler.get("LegionRank") +")\r\n" - + "联盟战斗力:" + mapler.get("LegionPower") + " (每天" + mapler.get("LegionCoinsPerDay") +"币)"; + try { + StringBuilder json = new StringBuilder(); + URL urlObject = new URL(url); + URLConnection uc = urlObject.openConnection(); + uc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); + BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(),"UTF-8")); + String inputLine = null; + while ( (inputLine = in.readLine()) != null) { + json.append(inputLine); } - + in.close(); @SuppressWarnings("unchecked") - List> gd = (List>) mapler.get("GraphData"); - if(gd!=null) { - Long totalDifference = (long) 0; - for(Map temp : gd) { - totalDifference = totalDifference + Long.parseLong(temp.get("EXPDifference").toString()); - } - Long perDay = totalDifference/gd.size(); - Long currentExp = Long.parseLong(gd.get(gd.size()-1).get("TotalOverallEXP").toString()); - if((int)mapler.get("Level")<250) { - Long nextExp = Long.parseLong("7764453421743"); - String theDay = ""; - if(perDay==0) { - theDay = "Infinity"; - }else { - Long day = (nextExp - currentExp)/perDay; - theDay = day + ""; - } - message = message + "\r\n" + "按照目前的进度,还需要" + theDay + "天到达250级。"; - }else{ - Long nextExp = Long.parseLong("84583665273612"); - String theDay = ""; - if(perDay==0) { - theDay = "Infinity"; - }else { - Long day = (nextExp - currentExp)/perDay; - theDay = day + ""; - } - message = message + "\r\n" + "按照目前的进度,还需要" + theDay + "天到达275级。"; - } - - Long nextExp = Long.parseLong("10104895811478400"); - String theDay = ""; - if(perDay==0) { - theDay = "Infinity"; - }else { - Long day = (nextExp - currentExp)/perDay; - theDay = day + ""; - } - message = message + "\r\n" + "按照目前的进度,还需要" + theDay + "天到达300级。"; - -// message = message + makeLevelChart(gd); - - } - + Map mapler = (Map) JSONObject.parse(json.toString()); + String drawRankImage = drawService.drawRankImage(mapler); + return drawRankImage; } catch (FileNotFoundException e) { - String a = "查询角色不存在"; - return a; + e.printStackTrace(); + return "查询角色不存在"; } catch (Exception e) { e.printStackTrace(); - String a = "连接超时"; - return a; - } - //"[CQ:image,file="+imageUrl+"]\r\n" - if(imageUrl==null) { - return message; - }else { - try { - String imageName = mvpImageService.saveTempImage(imageUrl); - message = "[CQ:image,file="+imageName+ "]\r\n" + message; - return message; - } catch (Exception e) { - return message; - } + return "连接超时"; } } - - private String makeLevelChart(List> gd) { - XYSeriesCollection dataset1; - XYSeriesCollection dataset2; - JFreeChart chart; - XYPlot plot; - // 生成数据 - XYSeries series1 = new XYSeries("当天获得经验"); - - XYSeries series2 = new XYSeries("总经验"); - for(int i=0;i1) { - for(File temp : listFiles3) { - if(temp.getName().contains("stand")) { - standName = temp.getName(); - isStand = true; - break; - } - } - - if(isStand) { - for(File temp : listFiles3) { - if(!temp.getName().equals(standName)) { - temp.delete(); - } - } - }else { - for(File temp : listFiles3) { - if(temp.getName().contains("move")) { - moveName = temp.getName(); - isMove = true; - } - } - if(isMove) { - for(File temp : listFiles3) { - if(!temp.getName().equals(moveName)) { - temp.delete(); - } - } - }else { - for(int i=0;i1) { + for(File temp : listFiles3) { + if(temp.getName().contains("stand")) { + standName = temp.getName(); + isStand = true; + break; + } + } + + if(isStand) { + for(File temp : listFiles3) { + if(!temp.getName().equals(standName)) { + temp.delete(); + } + } + }else { + for(File temp : listFiles3) { + if(temp.getName().contains("move")) { + moveName = temp.getName(); + isMove = true; + } + } + if(isMove) { + for(File temp : listFiles3) { + if(!temp.getName().equals(moveName)) { + temp.delete(); + } + } + }else { + for(int i=0;i jobj = JSON.parseObject(readJsonFile,LinkedHashMap.class,Feature.OrderedField); - for(Map.Entry entry : jobj.entrySet()) { + @SuppressWarnings("unchecked") + @Override + public void updateMobInfo() { + int a = 1; + a++; + if(a==2) { + String readJsonFile = readJsonFile("/www/wwwroot/badeling/Mob.img.json"); + LinkedHashMap jobj = JSON.parseObject(readJsonFile,LinkedHashMap.class,Feature.OrderedField); + for(Map.Entry entry : jobj.entrySet()) { // System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); - Map object = (Map) jobj.get(entry.getKey()); - Map object2 = (Map) object.get("name"); - //前者id 后者名字 - MobName mobName = new MobName(); - mobName.setMobId(object.get("_dirName")+""); - mobName.setName(object2.get("_value")+""); - mobNameRepository.save(mobName); - System.out.println(mobName.toString()); - } - } - - File file1=new File("/www/wwwroot/badeling/result"); - File[] listFiles = file1.listFiles(); - for(File file : listFiles) { - String readJsonFile = readJsonFile(file.getPath()); - Map jobj = JSON.parseObject(readJsonFile); - Object object = jobj.get("info"); - if(object!=null) { - Map map = (Map) jobj.get("info"); - MobInfo mobInfo = new MobInfo(); - mobInfo.setMobId(file.getName().substring(0,file.getName().indexOf("."))); - if(map.get("level")!=null) { - Map map2 = (Map)map.get("level"); - mobInfo.setLevel(map2.get("_value")+""); - } - if(map.get("maxHP")!=null) { - Map map2 = (Map)map.get("maxHP"); - mobInfo.setMaxHp(map2.get("_value")+""); - } - if(map.get("maxMP")!=null) { - Map map2 = (Map)map.get("maxMP"); - mobInfo.setMaxMp(map2.get("_value")+""); - } - if(map.get("speed")!=null) { - Map map2 = (Map)map.get("speed"); - mobInfo.setSpeed(map2.get("_value")+""); - } - if(map.get("PDDamage")!=null) { - Map map2 = (Map)map.get("PDDamage"); - mobInfo.setPaDamage(map2.get("_value")+""); - } - if(map.get("MADamage")!=null) { - Map map2 = (Map)map.get("MADamage"); - mobInfo.setMaDamage(map2.get("_value")+""); - } - if(map.get("PDRate")!=null) { - Map map2 = (Map)map.get("PDRate"); - mobInfo.setPdRate(map2.get("_value")+""); - } - if(map.get("MDRate")!=null) { - Map map2 = (Map)map.get("MDRate"); - mobInfo.setMdRate(map2.get("_value")+""); - } - if(map.get("acc")!=null) { - Map map2 = (Map)map.get("acc"); - mobInfo.setAcc(map2.get("_value")+""); - } - if(map.get("eva")!=null) { - Map map2 = (Map)map.get("eva"); - mobInfo.setEva(map2.get("_value")+""); - } - if(map.get("pushed")!=null) { - Map map2 = (Map)map.get("pushed"); - mobInfo.setPushed(map2.get("_value")+""); - } - if(map.get("fs")!=null) { - Map map2 = (Map)map.get("fs"); - mobInfo.setFs(map2.get("_value")+""); - } - if(map.get("exp")!=null) { - Map map2 = (Map)map.get("exp"); - mobInfo.setExp(map2.get("_value")+""); - } - if(map.get("summonType")!=null) { - Map map2 = (Map)map.get("summonType"); - mobInfo.setSummerType(map2.get("_value")+""); - } - if(map.get("category")!=null) { - Map map2 = (Map)map.get("category"); - mobInfo.setCategory(map2.get("_value")+""); - } - if(map.get("elemAttr")!=null) { - Map map2 = (Map)map.get("elemAttr"); - mobInfo.setElemAttr(map2.get("_value")+""); - } - if(map.get("mobType")!=null) { - Map map2 = (Map)map.get("mobType"); - mobInfo.setMobType(map2.get("_value")+""); - } - if(map.get("link")!=null) { - Map map2 = (Map)map.get("link"); - mobInfo.setLink(map2.get("_value")+""); - } - if(map.get("boss")!=null) { - Map map2 = (Map)map.get("boss"); - mobInfo.setBoss(map2.get("_value")+""); - } - System.out.println(mobInfo.toString()); - mobInfoRepository.save(mobInfo); - } - - } - } - - @Override - public String searchMob(String raw_message, String group_id, String user_id) { - raw_message = raw_message.replaceAll("[", "[").replaceAll("]", "]"); - System.out.println(raw_message); - List mobNameList = mobNameRepository.findByName(raw_message); + Map object = (Map) jobj.get(entry.getKey()); + Map object2 = (Map) object.get("name"); + //前者id 后者名字 + MobName mobName = new MobName(); + mobName.setMobId(object.get("_dirName")+""); + mobName.setName(object2.get("_value")+""); + mobNameRepository.save(mobName); + System.out.println(mobName.toString()); + } + } + + File file1=new File("/www/wwwroot/badeling/result"); + File[] listFiles = file1.listFiles(); + for(File file : listFiles) { + String readJsonFile = readJsonFile(file.getPath()); + Map jobj = JSON.parseObject(readJsonFile); + Object object = jobj.get("info"); + if(object!=null) { + Map map = (Map) jobj.get("info"); + MobInfo mobInfo = new MobInfo(); + mobInfo.setMobId(file.getName().substring(0,file.getName().indexOf("."))); + if(map.get("level")!=null) { + Map map2 = (Map)map.get("level"); + mobInfo.setLevel(map2.get("_value")+""); + } + if(map.get("maxHP")!=null) { + Map map2 = (Map)map.get("maxHP"); + mobInfo.setMaxHp(map2.get("_value")+""); + } + if(map.get("maxMP")!=null) { + Map map2 = (Map)map.get("maxMP"); + mobInfo.setMaxMp(map2.get("_value")+""); + } + if(map.get("speed")!=null) { + Map map2 = (Map)map.get("speed"); + mobInfo.setSpeed(map2.get("_value")+""); + } + if(map.get("PDDamage")!=null) { + Map map2 = (Map)map.get("PDDamage"); + mobInfo.setPaDamage(map2.get("_value")+""); + } + if(map.get("MADamage")!=null) { + Map map2 = (Map)map.get("MADamage"); + mobInfo.setMaDamage(map2.get("_value")+""); + } + if(map.get("PDRate")!=null) { + Map map2 = (Map)map.get("PDRate"); + mobInfo.setPdRate(map2.get("_value")+""); + } + if(map.get("MDRate")!=null) { + Map map2 = (Map)map.get("MDRate"); + mobInfo.setMdRate(map2.get("_value")+""); + } + if(map.get("acc")!=null) { + Map map2 = (Map)map.get("acc"); + mobInfo.setAcc(map2.get("_value")+""); + } + if(map.get("eva")!=null) { + Map map2 = (Map)map.get("eva"); + mobInfo.setEva(map2.get("_value")+""); + } + if(map.get("pushed")!=null) { + Map map2 = (Map)map.get("pushed"); + mobInfo.setPushed(map2.get("_value")+""); + } + if(map.get("fs")!=null) { + Map map2 = (Map)map.get("fs"); + mobInfo.setFs(map2.get("_value")+""); + } + if(map.get("exp")!=null) { + Map map2 = (Map)map.get("exp"); + mobInfo.setExp(map2.get("_value")+""); + } + if(map.get("summonType")!=null) { + Map map2 = (Map)map.get("summonType"); + mobInfo.setSummerType(map2.get("_value")+""); + } + if(map.get("category")!=null) { + Map map2 = (Map)map.get("category"); + mobInfo.setCategory(map2.get("_value")+""); + } + if(map.get("elemAttr")!=null) { + Map map2 = (Map)map.get("elemAttr"); + mobInfo.setElemAttr(map2.get("_value")+""); + } + if(map.get("mobType")!=null) { + Map map2 = (Map)map.get("mobType"); + mobInfo.setMobType(map2.get("_value")+""); + } + if(map.get("link")!=null) { + Map map2 = (Map)map.get("link"); + mobInfo.setLink(map2.get("_value")+""); + } + if(map.get("boss")!=null) { + Map map2 = (Map)map.get("boss"); + mobInfo.setBoss(map2.get("_value")+""); + } + System.out.println(mobInfo.toString()); + mobInfoRepository.save(mobInfo); + } + + } + } + + @Override + public String searchMob(String raw_message, String group_id, String user_id) { + raw_message = raw_message.replaceAll("[", "[").replaceAll("]", "]"); + System.out.println(raw_message); + List mobNameList = mobNameRepository.findByName(raw_message); // List mobNameExactList = mobNameRepository.findAllMob(); - StringBuffer reply = new StringBuffer(); - System.out.println(mobNameList.size()); - int i=0; - if(mobNameList.size()!=0) { - while(i attrMap = new HashMap<>(); - attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); - attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); - int index=0; - while(index=2) { - String reply2 = "查询到同名怪物有:"; - for(MobName mn : mobNameList) { - reply2 = reply2 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; - } - GroupMsg groupMsg2 = new GroupMsg(); - groupMsg2.setGroup_id(Long.parseLong(group_id)); - groupMsg2.setMessage(reply2); - groupMsgService.sendGroupMsg(groupMsg2); - } - - List mobNameLikeList = mobNameRepository.findByNameLike(raw_message); - mobNameLikeList.removeAll(mobNameList); - System.out.println("相似的结果量"+mobNameLikeList.size()); - String reply3 = "查询到相似的怪物有:"; - if(mobNameLikeList.size()==0) { - reply3 = "查询到相似的怪物有:null"; - return null; - }else if(mobNameLikeList.size()<10) { - for(MobName mn : mobNameLikeList) { - reply3 = reply3 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; - } - }else{ - reply3 = "查询到相似的怪物有:查询结果超过10条,为防止刷屏,已将结果私聊于您。"; - int k = 0; - String pReply = ""; - while(mobNameLikeList.size()>0) { - MobName remove = mobNameLikeList.remove(0); - pReply = pReply + remove.getName()+"("+remove.getMobId()+")"+"\r\n"; - k++; - if(k==10) { - PrivateMsg privateMsg = new PrivateMsg(); - privateMsg.setUser_id(Long.parseLong(user_id)); - privateMsg.setMessage(pReply); - groupMsgService.sendPrivateMsg(privateMsg); - pReply = ""; - k=0; - } - } - if(!pReply.equals("")) { - PrivateMsg privateMsg = new PrivateMsg(); - privateMsg.setUser_id(Long.parseLong(user_id)); - privateMsg.setMessage(pReply); - groupMsgService.sendPrivateMsg(privateMsg); - } - } - GroupMsg groupMsg3 = new GroupMsg(); - groupMsg3.setGroup_id(Long.parseLong(group_id)); - groupMsg3.setMessage(reply3); - groupMsgService.sendGroupMsg(groupMsg3); - return null; - } - - @Override - public String searchMob(Long mob_id,String group_id) { - MobName mobName = mobNameRepository.findByMobId(mob_id); - if(mobName==null) { - return null; - } - MobInfo mobInfo = mobInfoRepository.findMobInfoByMobId(mob_id+""); - StringBuffer reply = new StringBuffer(); - try { - if(mobInfo.getLink()!=null) { - String url = MsbotConst.imageUrl+"result_img/"+mobInfo.getLink()+".img/"+mobInfo.getLink()+".img"; - File file = new File(url); - if(file.exists()) { - File[] listFiles = file.listFiles(); - File file2 = listFiles[0]; - reply.append("[CQ:image,file=result_img/") - .append(mobInfo.getLink()) - .append(".img/") - .append(mobInfo.getLink()) - .append(".img/") - .append(file2.getName()) - .append("]"); - } - } - } catch (Exception e) { - - } - String url = MsbotConst.imageUrl+"result_img/"+mobName.getMobId()+".img/"+mobName.getMobId()+".img"; - System.out.println(url); - File file = new File(url); - if(file.exists()) { - File[] listFiles = file.listFiles(); - File file2 = listFiles[0]; - reply.append("[CQ:image,file=result_img/") - .append(mobName.getMobId()) - .append(".img/") - .append(mobName.getMobId()) - .append(".img/") - .append(file2.getName()) - .append("]"); - } - - if(mobInfo!=null) { - reply.append("\r\n").append(mobName.getName()).append("(").append(mobName.getMobId()).append(")"); - if(mobInfo.getBoss()==null) { - reply.append("\r\n怪物类型:普通怪"); - }else { - reply.append("\r\n怪物类型:首领怪"); - } - reply.append("\r\n") - .append("等级:").append(mobInfo.getLevel()).append("\r\n") - .append("血量:").append(mobInfo.getMaxHp()).append("\r\n") + .append("经验:").append(mobInfo.getExp()).append("\r\n") + .append("冰雷火毒圣暗物").append("\r\n"); + if(mobInfo.getElemAttr()==null) { + reply.append("○○○○○○○"); + }else { + String attr = mobInfo.getElemAttr(); + Map attrMap = new HashMap<>(); + attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); + attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); + int index=0; + while(index=2) { + String reply2 = "查询到同名怪物有:"; + for(MobName mn : mobNameList) { + reply2 = reply2 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; + } + GroupMsg groupMsg2 = new GroupMsg(); + groupMsg2.setGroup_id(Long.parseLong(group_id)); + groupMsg2.setMessage(reply2); + groupMsgService.sendGroupMsg(groupMsg2); + } + + List mobNameLikeList = mobNameRepository.findByNameLike(raw_message); + mobNameLikeList.removeAll(mobNameList); + System.out.println("相似的结果量"+mobNameLikeList.size()); + String reply3 = "查询到相似的怪物有:"; + if(mobNameLikeList.size()==0) { + reply3 = "查询到相似的怪物有:null"; + return null; + }else if(mobNameLikeList.size()<10) { + for(MobName mn : mobNameLikeList) { + reply3 = reply3 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; + } + }else{ + reply3 = "查询到相似的怪物有:查询结果超过10条,为防止刷屏,已将结果私聊于您。"; + int k = 0; + String pReply = ""; + while(mobNameLikeList.size()>0) { + MobName remove = mobNameLikeList.remove(0); + pReply = pReply + remove.getName()+"("+remove.getMobId()+")"+"\r\n"; + k++; + if(k==10) { + PrivateMsg privateMsg = new PrivateMsg(); + privateMsg.setUser_id(Long.parseLong(user_id)); + privateMsg.setMessage(pReply); + groupMsgService.sendPrivateMsg(privateMsg); + pReply = ""; + k=0; + } + } + if(!pReply.equals("")) { + PrivateMsg privateMsg = new PrivateMsg(); + privateMsg.setUser_id(Long.parseLong(user_id)); + privateMsg.setMessage(pReply); + groupMsgService.sendPrivateMsg(privateMsg); + } + } + GroupMsg groupMsg3 = new GroupMsg(); + groupMsg3.setGroup_id(Long.parseLong(group_id)); + groupMsg3.setMessage(reply3); + groupMsgService.sendGroupMsg(groupMsg3); + return null; + } + + @Override + public String searchMob(Long mob_id,String group_id) { + MobName mobName = mobNameRepository.findByMobId(mob_id); + if(mobName==null) { + return null; + } + MobInfo mobInfo = mobInfoRepository.findMobInfoByMobId(mob_id+""); + StringBuffer reply = new StringBuffer(); + try { + if(mobInfo.getLink()!=null) { + String url = MsbotConst.imageUrl+"result_img/"+mobInfo.getLink()+".img/"+mobInfo.getLink()+".img"; + File file = new File(url); + if(file.exists()) { + File[] listFiles = file.listFiles(); + File file2 = listFiles[0]; + reply.append("[CQ:image,file=result_img/") + .append(mobInfo.getLink()) + .append(".img/") + .append(mobInfo.getLink()) + .append(".img/") + .append(file2.getName()) + .append("]"); + } + } + } catch (Exception e) { + + } + String url = MsbotConst.imageUrl+"result_img/"+mobName.getMobId()+".img/"+mobName.getMobId()+".img"; + System.out.println(url); + File file = new File(url); + if(file.exists()) { + File[] listFiles = file.listFiles(); + File file2 = listFiles[0]; + reply.append("[CQ:image,file=result_img/") + .append(mobName.getMobId()) + .append(".img/") + .append(mobName.getMobId()) + .append(".img/") + .append(file2.getName()) + .append("]"); + } + + if(mobInfo!=null) { + reply.append("\r\n").append(mobName.getName()).append("(").append(mobName.getMobId()).append(")"); + if(mobInfo.getBoss()==null) { + reply.append("\r\n怪物类型:普通怪"); + }else { + reply.append("\r\n怪物类型:首领怪"); + } + reply.append("\r\n") + .append("等级:").append(mobInfo.getLevel()).append("\r\n") + .append("血量:").append(mobInfo.getMaxHp()).append("\r\n") // .append("蓝量:").append(mobInfo.getMaxMp()).append("\r\n") - .append("防御:").append(mobInfo.getPdRate()).append("%\r\n") + .append("防御:").append(mobInfo.getPdRate()).append("%\r\n") // .append("魔法防御:").append(mobInfo.getMdRate()).append("%\r\n") // .append("移动速度:").append(mobInfo.getSpeed()).append("\r\n") // .append("击退伤害:").append(mobInfo.getPushed()).append("\r\n") - .append("经验:").append(mobInfo.getExp()).append("\r\n") - .append("冰雷火毒圣暗物").append("\r\n"); - if(mobInfo.getElemAttr()==null) { - reply.append("○○○○○○○"); - }else { - String attr = mobInfo.getElemAttr(); - Map attrMap = new HashMap<>(); - attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); - attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); - int index=0; - while(index attrMap = new HashMap<>(); + attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); + attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); + int index=0; + while(index attrMap = new HashMap<>(); - attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); - attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); - int index=0; - while(index mobNameList = mobNameRepository.findByName(raw_message); + .append("经验:").append(mobInfo.getExp()).append("\r\n") + .append("冰雷火毒圣暗物").append("\r\n"); + if(mobInfo.getElemAttr()==null) { + reply.append("○○○○○○○"); + }else { + String attr = mobInfo.getElemAttr(); + Map attrMap = new HashMap<>(); + attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); + attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); + int index=0; + while(index mobNameList = mobNameRepository.findByName(raw_message); // List mobNameExactList = mobNameRepository.findAllMob(); - StringBuffer reply = new StringBuffer(); - System.out.println(mobNameList.size()); - int i=0; - if(mobNameList.size()!=0) { - while(i attrMap = new HashMap<>(); - attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); - attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); - int index=0; - while(index=2) { - String reply2 = "查询到同名怪物有:"; - for(MobName mn : mobNameList) { - reply2 = reply2 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; - } - ChannelReplyMsg crm2 = new ChannelReplyMsg(); - crm2.setChannel_id(channel_id); - crm2.setGuild_id(guild_id); - crm2.setMessage(reply2); - groupMsgService.sendChannelMsg(crm2); - } - - List mobNameLikeList = mobNameRepository.findByNameLike(raw_message); - mobNameLikeList.removeAll(mobNameList); - System.out.println("相似的结果量"+mobNameLikeList.size()); - String reply3 = "查询到相似的怪物有:"; - if(mobNameLikeList.size()==0) { - reply3 = "查询到相似的怪物有:null"; - return null; - }else if(mobNameLikeList.size()<30) { - for(MobName mn : mobNameLikeList) { - reply3 = reply3 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; - } - }else{ - reply3 = "查询到相似的怪物有:查询结果超过30条,为防止刷屏,已将结果私聊于您。"; - } - ChannelReplyMsg crm3 = new ChannelReplyMsg(); - crm3.setChannel_id(channel_id); - crm3.setGuild_id(guild_id); - crm3.setMessage(reply3); - groupMsgService.sendChannelMsg(crm3); - return null; - - } - -} + .append("经验:").append(mobInfo.getExp()).append("\r\n") + .append("冰雷火毒圣暗物").append("\r\n"); + if(mobInfo.getElemAttr()==null) { + reply.append("○○○○○○○"); + }else { + String attr = mobInfo.getElemAttr(); + Map attrMap = new HashMap<>(); + attrMap.put("I", "○");attrMap.put("L", "○");attrMap.put("F", "○");attrMap.put("S", "○"); + attrMap.put("H", "○");attrMap.put("D", "○");attrMap.put("P", "○"); + int index=0; + while(index=2) { + String reply2 = "查询到同名怪物有:"; + for(MobName mn : mobNameList) { + reply2 = reply2 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; + } + ChannelReplyMsg crm2 = new ChannelReplyMsg(); + crm2.setChannel_id(channel_id); + crm2.setGuild_id(guild_id); + crm2.setMessage(reply2); + groupMsgService.sendChannelMsg(crm2); + } + + List mobNameLikeList = mobNameRepository.findByNameLike(raw_message); + mobNameLikeList.removeAll(mobNameList); + System.out.println("相似的结果量"+mobNameLikeList.size()); + String reply3 = "查询到相似的怪物有:"; + if(mobNameLikeList.size()==0) { + reply3 = "查询到相似的怪物有:null"; + return null; + }else if(mobNameLikeList.size()<30) { + for(MobName mn : mobNameLikeList) { + reply3 = reply3 + "\r\n" + mn.getName()+"("+mn.getMobId()+")"; + } + }else{ + reply3 = "查询到相似的怪物有:查询结果超过30条,为防止刷屏,已将结果私聊于您。"; + } + ChannelReplyMsg crm3 = new ChannelReplyMsg(); + crm3.setChannel_id(channel_id); + crm3.setGuild_id(guild_id); + crm3.setMessage(reply3); + groupMsgService.sendChannelMsg(crm3); + return null; + + } + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/util/CosSdk.java b/src/main/java/com/badeling/msbot/util/CosSdk.java index 6b66525..6060517 100644 --- a/src/main/java/com/badeling/msbot/util/CosSdk.java +++ b/src/main/java/com/badeling/msbot/util/CosSdk.java @@ -1,8 +1,5 @@ package com.badeling.msbot.util; -import java.io.File; -import java.util.List; - import com.badeling.msbot.config.MsbotConst; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; @@ -11,17 +8,16 @@ import com.qcloud.cos.exception.CosClientException; import com.qcloud.cos.exception.CosServiceException; import com.qcloud.cos.http.HttpProtocol; -import com.qcloud.cos.model.COSObjectSummary; -import com.qcloud.cos.model.ListObjectsRequest; -import com.qcloud.cos.model.ObjectListing; -import com.qcloud.cos.model.PutObjectRequest; -import com.qcloud.cos.model.PutObjectResult; +import com.qcloud.cos.model.*; import com.qcloud.cos.region.Region; +import java.io.File; +import java.util.List; + public class CosSdk { - - - + + + public static COSClient createCos() { // 1 初始化用户身份信息(secretId, secretKey)。 // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理 @@ -39,7 +35,8 @@ public static COSClient createCos() { COSClient cosClient = new COSClient(cred, clientConfig); return cosClient; } - + + @SuppressWarnings("unused") public static void deleteAllFile() { COSClient cosClient = createCos(); // Bucket的命名格式为 BucketName-APPID ,此处填写的存储桶名称必须为此格式 @@ -54,40 +51,41 @@ public static void deleteAllFile() { listObjectsRequest.setMaxKeys(1000); ObjectListing objectListing = null; do { - try { - objectListing = cosClient.listObjects(listObjectsRequest); - } catch (CosServiceException e) { - e.printStackTrace(); - return; - } catch (CosClientException e) { - e.printStackTrace(); - return; - } - // common prefix表示表示被delimiter截断的路径, 如delimter设置为/, common prefix则表示所有子目录的路径 - List commonPrefixs = objectListing.getCommonPrefixes(); + try { + objectListing = cosClient.listObjects(listObjectsRequest); + } catch (CosServiceException e) { + e.printStackTrace(); + return; + } catch (CosClientException e) { + e.printStackTrace(); + return; + } + // common prefix表示表示被delimiter截断的路径, 如delimter设置为/, common prefix则表示所有子目录的路径 + List commonPrefixs = objectListing.getCommonPrefixes(); - // object summary表示所有列出的object列表 - List cosObjectSummaries = objectListing.getObjectSummaries(); - for (COSObjectSummary cosObjectSummary : cosObjectSummaries) { - // 文件的路径key - String key = cosObjectSummary.getKey(); - // 文件的etag - String etag = cosObjectSummary.getETag(); - // 文件的长度 - long fileSize = cosObjectSummary.getSize(); - // 文件的存储类型 - String storageClasses = cosObjectSummary.getStorageClass(); - if(!key.equals(MsbotConst.channelBotId + ".json")) { - deleteFile(cosClient,key); - } - } + // object summary表示所有列出的object列表 + List cosObjectSummaries = objectListing.getObjectSummaries(); + for (COSObjectSummary cosObjectSummary : cosObjectSummaries) { + // 文件的路径key + String key = cosObjectSummary.getKey(); + // 文件的etag + String etag = cosObjectSummary.getETag(); + // 文件的长度 + long fileSize = cosObjectSummary.getSize(); + // 文件的存储类型 + String storageClasses = cosObjectSummary.getStorageClass(); + if(!key.equals(MsbotConst.channelBotId + ".json")) { + deleteFile(cosClient,key); + } + } - String nextMarker = objectListing.getNextMarker(); - listObjectsRequest.setMarker(nextMarker); + String nextMarker = objectListing.getNextMarker(); + listObjectsRequest.setMarker(nextMarker); } while (objectListing.isTruncated()); cosClient.shutdown(); } - + + @SuppressWarnings("unused") public static String uploadFile(String localFilePath) { COSClient cosClient = createCos(); // 指定要上传的文件 @@ -100,26 +98,26 @@ public static String uploadFile(String localFilePath) { } //判断文件是否存在 try { - boolean objectExists = cosClient.doesObjectExist(MsbotConst.bucketName, key); - if(!objectExists) { - //文件不存在 上传 - PutObjectRequest putObjectRequest = new PutObjectRequest(MsbotConst.bucketName, key, localFile); + boolean objectExists = cosClient.doesObjectExist(MsbotConst.bucketName, key); + if(!objectExists) { + //文件不存在 上传 + PutObjectRequest putObjectRequest = new PutObjectRequest(MsbotConst.bucketName, key, localFile); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); - } + } } catch (CosServiceException e) { - e.printStackTrace(); + e.printStackTrace(); } catch (CosClientException e) { - e.printStackTrace(); + e.printStackTrace(); } cosClient.shutdown(); return key; } - + public static void deleteFile(COSClient cosClient,String file_url) { // 指定被删除的文件在 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示删除位于 folder 路径下的文件 picture.jpg cosClient.deleteObject(MsbotConst.bucketName, file_url); cosClient.shutdown(); } - - -} + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/util/HttpUtil.java b/src/main/java/com/badeling/msbot/util/HttpUtil.java index a16f073..1096014 100644 --- a/src/main/java/com/badeling/msbot/util/HttpUtil.java +++ b/src/main/java/com/badeling/msbot/util/HttpUtil.java @@ -1,15 +1,6 @@ package com.badeling.msbot.util; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - +import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; @@ -23,7 +14,15 @@ import org.apache.http.util.EntityUtils; import org.springframework.util.StringUtils; -import com.alibaba.fastjson.JSONObject; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; public class HttpUtil { @@ -49,26 +48,27 @@ public static String post(String requestUrl, String accessToken, String contentT return HttpUtil.postGeneralUrl(url, contentType, params, encoding); } + @SuppressWarnings("unused") public static String postGeneralUrl(String generalUrl, String contentType, String params, String encoding) throws Exception { URL url = new URL(generalUrl); - + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); - + connection.setRequestProperty("Content-Type", contentType); connection.setRequestProperty("Connection", "Keep-Alive"); connection.setUseCaches(false); connection.setDoOutput(true); connection.setDoInput(true); - + DataOutputStream out = new DataOutputStream(connection.getOutputStream()); out.write(params.getBytes(encoding)); out.flush(); out.close(); - + connection.connect(); Map> headers = connection.getHeaderFields(); @@ -88,7 +88,7 @@ public static String postGeneralUrl(String generalUrl, String contentType, Strin in.close(); return result; } - + //百度翻译 public static JSONObject doPostStr(String url,String reqContent) throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); @@ -104,10 +104,10 @@ public static JSONObject doPostStr(String url,String reqContent) throws IOExcept } return null; } - - - public static JSONObject doPostStr(String url, Map reqContent) throws IOException{ - CloseableHttpClient httpClient = HttpClients.createDefault(); + + + public static JSONObject doPostStr(String url, Map reqContent) throws IOException{ + CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); //装填参数 @@ -127,10 +127,10 @@ public static JSONObject doPostStr(String url, Map reqContent) t return JSONObject.parseObject(resContent); } return null; - } + } - public static JSONObject doGetStr(String url) throws IOException { - CloseableHttpClient httpClient = HttpClients.createDefault(); + public static JSONObject doGetStr(String url) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); @@ -139,5 +139,5 @@ public static JSONObject doGetStr(String url) throws IOException { return JSONObject.parseObject(content); } return null; - } -} + } +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/util/Loadfont2.java b/src/main/java/com/badeling/msbot/util/Loadfont2.java index c215025..447da69 100644 --- a/src/main/java/com/badeling/msbot/util/Loadfont2.java +++ b/src/main/java/com/badeling/msbot/util/Loadfont2.java @@ -1,113 +1,109 @@ package com.badeling.msbot.util; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics2D; + +import com.badeling.msbot.config.MsbotConst; +import com.badeling.msbot.controller.NewImageUtils; + +import javax.imageio.ImageIO; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; - import java.io.FileInputStream; -import java.io.IOException; import java.util.Map; import java.util.UUID; -import javax.imageio.ImageIO; - -import com.badeling.msbot.config.MsbotConst; -import com.badeling.msbot.controller.NewImageUtils; - public class Loadfont2{ public static String testFont(String message) throws Exception { BufferedImage buffImg = new BufferedImage(480, (message.length()/24+1)*34, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0,0,6000,6000);//填充整个屏幕 - Font font = Font(); - g.setBackground(Color.WHITE); - g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); - g.setFont(font); - font = Loadfont.Font(); - g.setColor(new Color(0,0,0)); - for(int i=0;imessage.length()) { - g.drawString(message.substring(i),32,32*((i+24)/24)-6); - }else { - g.drawString(message.substring(i, i+24),32,32*((i+24)/24)-6); - } - } - g.dispose(); - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(buffImg, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + Font font = Font(); + g.setBackground(Color.WHITE); + g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); + g.setFont(font); + font = Loadfont.Font(); + g.setColor(new Color(0,0,0)); + for(int i=0;imessage.length()) { + g.drawString(message.substring(i),32,32*((i+24)/24)-6); + }else { + g.drawString(message.substring(i, i+24),32,32*((i+24)/24)-6); + } + } + g.dispose(); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(buffImg, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; } - + public static String testFont2(String msg) throws Exception { String[] messageList = msg.split("\r"); int count = 0; for(String temp : messageList) { count = count + temp.length()/24+1; } - + BufferedImage buffImg = new BufferedImage(480, count*32, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0,0,6000,6000);//填充整个屏幕 - Font font = Font(); - g.setBackground(Color.WHITE); - g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); - g.setFont(font); - font = Loadfont.Font(); - g.setColor(new Color(0,0,0)); - - int wCount = 0; - for(String message : messageList) { - if(message.equals("")) { - wCount++; - continue; - } + Font font = Font(); + g.setBackground(Color.WHITE); + g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); + g.setFont(font); + font = Loadfont.Font(); + g.setColor(new Color(0,0,0)); + + int wCount = 0; + for(String message : messageList) { + if(message.equals("")) { + wCount++; + continue; + } for(int i=0;imessage.length()) { - g.drawString(message.substring(i),32,wCount*32-6); - wCount++; - }else { - g.drawString(message.substring(i, i+24),32,wCount*32-6); - wCount++; - } - } + if(i+24>message.length()) { + g.drawString(message.substring(i),32,wCount*32-6); + wCount++; + }else { + g.drawString(message.substring(i, i+24),32,wCount*32-6); + wCount++; + } + } } - - - g.dispose(); - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(buffImg, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + + + g.dispose(); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(buffImg, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; } - - + + //第一个参数是外部字体名,第二个是字体大小 public static Font loadFont(String fontFileName, float fontSize) { try { File file = new File(fontFileName); - + FileInputStream aixing = new FileInputStream(file); - + Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, aixing); - + Font dynamicFontPt = dynamicFont.deriveFont(fontSize); - + aixing.close(); - + return dynamicFontPt; } - + catch(Exception e){ - //异常处理 - e.printStackTrace(); - - return new java.awt.Font("宋体", Font.PLAIN, 14); + //异常处理 + e.printStackTrace(); + + return new java.awt.Font("宋体", Font.PLAIN, 14); } } @@ -115,10 +111,10 @@ public static java.awt.Font Font(){ String root= MsbotConst.imageUrl + "qd";//项目根目录路径 // String root = "D:\\go-cqhttp\\data\\images\\qd"; Font font = Loadfont2.loadFont(root+"/原版宋体.ttf", 18f);//调用 - + return font;//返回字体 } - + public static java.awt.Font Font(float i) { String root= MsbotConst.imageUrl + "qd";//项目根目录路径 // String root = "D:\\go-cqhttp\\data\\images\\qd"; @@ -140,16 +136,16 @@ public static java.awt.Font Font2(){ return font;//返回字体 - } - + } + private static void generateWaterFile(BufferedImage buffImg, String savePath) { - int temp = savePath.lastIndexOf(".") + 1; - try { - ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); - } catch (Exception e1) { - e1.printStackTrace(); - } - } + int temp = savePath.lastIndexOf(".") + 1; + try { + ImageIO.write(buffImg, savePath.substring(temp), new File(savePath)); + } catch (Exception e1) { + e1.printStackTrace(); + } + } public static String zbImage(Map map) throws Exception{ @@ -157,46 +153,46 @@ public static String zbImage(Map map) throws Exception{ Graphics2D g = buffImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0,0,6000,6000);//填充整个屏幕 - Font font = Font(); - g.setBackground(Color.WHITE); - g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); - g.setFont(font); - font = Loadfont.Font(); - g.setColor(new Color(0,0,0)); - - g.drawString(map.get("name"),32,24); - g.drawString(map.get("star"),32,24*2); - g.drawString(map.get("ch"),32,24*3); - g.drawString(map.get("table"),32,24*4); - g.drawString("//-------------------//",32,24*5); - String[] split = map.get("gThing").split("\\n"); - - g.drawString(split[0],32,24*6); - g.drawString(split[1],32,24*7); - g.drawString("//-------------------//",32,24*8); - split = map.get("bThing").split("\\n"); - g.drawString(split[0],32,24*9); - g.drawString(split[1],32,24*10); - g.drawString("//-------------------//",32,24*11); - g.drawString("今日最佳玄学地图是:",32,24*12); - g.drawString(map.get("map"),32,24*13); - String mapUrl = map.get("mapUrl"); - - mapUrl = mapUrl.substring(mapUrl.indexOf("save"),mapUrl.length()-1); - String mapFilePath = MsbotConst.imageUrl + mapUrl; - mapFilePath = mapFilePath.replaceAll("\\\\", "/"); - System.out.println(mapFilePath); + Font font = Font(); + g.setBackground(Color.WHITE); + g.drawImage(buffImg, 32, 32, buffImg.getWidth(), buffImg.getHeight(), null); + g.setFont(font); + font = Loadfont.Font(); + g.setColor(new Color(0,0,0)); + + g.drawString(map.get("name"),32,24); + g.drawString(map.get("star"),32,24*2); + g.drawString(map.get("ch"),32,24*3); + g.drawString(map.get("table"),32,24*4); + g.drawString("//-------------------//",32,24*5); + String[] split = map.get("gThing").split("\\n"); + + g.drawString(split[0],32,24*6); + g.drawString(split[1],32,24*7); + g.drawString("//-------------------//",32,24*8); + split = map.get("bThing").split("\\n"); + g.drawString(split[0],32,24*9); + g.drawString(split[1],32,24*10); + g.drawString("//-------------------//",32,24*11); + g.drawString("今日最佳玄学地图是:",32,24*12); + g.drawString(map.get("map"),32,24*13); + String mapUrl = map.get("mapUrl"); + + mapUrl = mapUrl.substring(mapUrl.indexOf("save"),mapUrl.length()-1); + String mapFilePath = MsbotConst.imageUrl + mapUrl; + mapFilePath = mapFilePath.replaceAll("\\\\", "/"); + System.out.println(mapFilePath); // 500,341 - BufferedImage mapFile = ImageIO.read(new File(mapFilePath)); - mapFile = NewImageUtils.resizeBufferedImage(mapFile, 250, 170 , true); - buffImg = NewImageUtils.watermark(buffImg, mapFile, 32 , 24*13+10, 1.0f); - - g.dispose(); - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String saveFilePath = MsbotConst.imageUrl + uuid +".png"; - ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); - generateWaterFile(buffImg, saveFilePath); - return "[CQ:image,file=" + uuid +".jpg]"; + BufferedImage mapFile = ImageIO.read(new File(mapFilePath)); + mapFile = NewImageUtils.resizeBufferedImage(mapFile, 250, 170 , true); + buffImg = NewImageUtils.watermark(buffImg, mapFile, 32 , 24*13+10, 1.0f); + + g.dispose(); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String saveFilePath = MsbotConst.imageUrl + uuid +".png"; + ImageIO.write(buffImg, "jpg", new File(MsbotConst.imageUrl + uuid +".jpg")); + generateWaterFile(buffImg, saveFilePath); + return "[CQ:image,file=" + uuid +".jpg]"; } } \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/util/MD5.java b/src/main/java/com/badeling/msbot/util/MD5.java index 58b38f7..e19a95d 100644 --- a/src/main/java/com/badeling/msbot/util/MD5.java +++ b/src/main/java/com/badeling/msbot/util/MD5.java @@ -5,7 +5,7 @@ import java.security.NoSuchAlgorithmException; public class MD5 { - // 首先初始化一个字符数组,用来存放每个16进制字符 + // 首先初始化一个字符数组,用来存放每个16进制字符 private static final char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; @@ -16,7 +16,7 @@ public class MD5 { * @return 输入字符串的MD5值 * */ - public static String md5(String input) throws UnsupportedEncodingException { + protected static String md5(String input) throws UnsupportedEncodingException { if (input == null) return null; From a877fa2fc9e522beacb7ddf38e60251d7c50c41c Mon Sep 17 00:00:00 2001 From: yingdi wu <7707131@qq.com> Date: Thu, 10 Aug 2023 10:19:02 +0800 Subject: [PATCH 63/66] =?UTF-8?q?=E5=90=8C=E6=AD=A5v2.1=E6=97=A0=E8=A7=86?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=83=A8=E5=88=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/badeling/msbot/entity/RoleAtt.java | 87 +++++++ .../msbot/repository/RoleAttRepository.java | 19 ++ .../msbot/serviceImpl/MsgServiceImpl.java | 226 ++++++++++++++++-- 3 files changed, 308 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/entity/RoleAtt.java create mode 100644 src/main/java/com/badeling/msbot/repository/RoleAttRepository.java diff --git a/src/main/java/com/badeling/msbot/entity/RoleAtt.java b/src/main/java/com/badeling/msbot/entity/RoleAtt.java new file mode 100644 index 0000000..c1050ba --- /dev/null +++ b/src/main/java/com/badeling/msbot/entity/RoleAtt.java @@ -0,0 +1,87 @@ +package com.badeling.msbot.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class RoleAtt { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private Long id; + private String user_id; + private String name; + private String group_id; + private Integer att; + private Integer attPer; + private Long maxAtt; + + public RoleAtt() { + + } + + @Override + public String toString() { + return "RoleAtt [id=" + id + ", user_id=" + user_id + ", name=" + name + ", group_id=" + group_id + ", att=" + + att + ", attPer=" + attPer + ", maxAtt=" + maxAtt + "]"; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGroup_id() { + return group_id; + } + + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + + public Integer getAtt() { + return att; + } + + public void setAtt(Integer att) { + this.att = att; + } + + public Integer getAttPer() { + return attPer; + } + + public void setAttPer(Integer attPer) { + this.attPer = attPer; + } + + public Long getMaxAtt() { + return maxAtt; + } + + public void setMaxAtt(Long maxAtt) { + this.maxAtt = maxAtt; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/repository/RoleAttRepository.java b/src/main/java/com/badeling/msbot/repository/RoleAttRepository.java new file mode 100644 index 0000000..9902934 --- /dev/null +++ b/src/main/java/com/badeling/msbot/repository/RoleAttRepository.java @@ -0,0 +1,19 @@ +package com.badeling.msbot.repository; + +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import com.badeling.msbot.entity.RoleAtt; + +public interface RoleAttRepository extends CrudRepository{ + @Query(value = "select * from role_att where user_id = ?1",nativeQuery=true) + RoleAtt findRoleBynumber(String user_id); + + @Modifying + @Transactional + @Query(value = "update role_att set att = ?2,att_per = ?3,max_att = ?4 where id = ?1",nativeQuery=true) + void modifyAtt(Long id, Integer att,Integer attPer,Long maxAtt); + +} \ No newline at end of file diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index c669acf..1857db0 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -93,6 +93,9 @@ public class MsgServiceImpl implements MsgService{ @Autowired GroupMemberRepository groupMemberRepository; + @Autowired + private RoleAttRepository roleAttRepository; + public static int[] starForceDesc(int level,int stat,int att,int star) { Map> starForceDataAfter16 = starForceDataAfter16(); Map map = starForceDataAfter16.get(level); @@ -1115,6 +1118,11 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.contains(MsbotConst.botName+"查成分")) { return handMemberAtt(receiveMsg); } + + //联盟查询 + if(raw_message.contains(MsbotConst.botName+"联盟查询")) { + return handLegionRank(receiveMsg); + } //说 if(raw_message.contains(MsbotConst.botName+"说")){ @@ -1434,25 +1442,19 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { //设置QQ号 roleDmg.setUser_id(receiveMsg.getSender().getUser_id()); //设置群号 - if(receiveMsg.getGroup_id().contains("101577006")) { - roleDmg.setGroup_id("398359236"); - }else { - roleDmg.setGroup_id(receiveMsg.getGroup_id()); - } + roleDmg.setGroup_id(receiveMsg.getGroup_id()); roleDmg.setCommonDmg(100); roleDmg.setBossDmg(200); - System.out.println("roleDmg:"); - System.out.println(roleDmg); roleDmg = roleDmgRepository.save(roleDmg); } try { for(String temp : split) { - temp.replace("%", ""); + temp = temp.replace("%", "").replace(MsbotConst.botName,""); if(temp.contains("伤害")) { - roleDmg.setCommonDmg(Integer.parseInt(temp.replace(MsbotConst.botName,"").replace("伤害", ""))); + roleDmg.setCommonDmg(Integer.parseInt(temp.replace("伤害", ""))); }else if(temp.toLowerCase().contains("boss")) { temp = temp.toLowerCase(); - roleDmg.setBossDmg(Integer.parseInt(temp.replace(MsbotConst.botName,"").replace("boss", ""))); + roleDmg.setBossDmg(Integer.parseInt(temp.replace("boss", ""))); }else { } } @@ -1466,6 +1468,84 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } + //攻击信息 + if(raw_message.contains("攻击")&&raw_message.contains("百分比")&&raw_message.contains("面板")) { + String[] split = raw_message.split(" "); + RoleAtt roleAtt = roleAttRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + if(roleAtt == null) { + //查询无角色 + roleAtt = new RoleAtt(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + roleAtt.setName(receiveMsg.getSender().getNickname()); + }else { + roleAtt.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + roleAtt.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + roleAtt.setGroup_id(receiveMsg.getGroup_id()); + roleAtt.setAtt(6728); + roleAtt.setAttPer(157); + roleAtt.setMaxAtt(Long.parseLong("66030797")); + roleAtt = roleAttRepository.save(roleAtt); + } + try { + for(String temp : split) { + temp = temp.replace("%", "").replace(MsbotConst.botName,""); + if(temp.contains("攻击")) { + roleAtt.setAtt(Integer.parseInt(temp.replace("攻击", ""))); + }else if(temp.contains("百分比")) { + roleAtt.setAttPer(Integer.parseInt(temp.replace("百分比", ""))); + }else if(temp.contains("面板")){ + roleAtt.setMaxAtt(Long.parseLong(temp.replace("面板", ""))); + }else { + } + } + roleAttRepository.modifyAtt(roleAtt.getId(), roleAtt.getAtt(), roleAtt.getAttPer(),roleAtt.getMaxAtt()); + + String reply = "修改成功"; + + RoleDmg roleDmg = roleDmgRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + if(roleDmg==null) { + reply = reply + ",未查询到伤害、boss数据,无法计算具体收益比。"; + replyMsg.setReply(reply); + return replyMsg; + } + + //攻击 攻击百分比 + int att_per = roleAtt.getAttPer(); + int att = roleAtt.getAtt(); + //面板 + Long max_att = roleAtt.getMaxAtt(); + //总伤 + int dmg = roleDmg.getCommonDmg(); + int boss = roleDmg.getBossDmg(); + + //计算如果新增40boss 相当于提升x攻击% + int add_boss = 40; + //boss面板 + float real_max_att = max_att/(100+dmg)*(100+dmg+boss); + //增加40boss后的boss面板 + float real_after_max_att = max_att/(100+dmg)*(100+dmg+boss+add_boss); + //增加40boss后的等效总攻击 + float after_att = att*real_after_max_att/real_max_att; + //等效总攻击换算为百分比 + float eq_att_per = ((float)after_att)/att*(100+att_per)-(100+att_per); + //等效攻击去除百分比 + float eq_att = (after_att-att)*100/(100+att_per); + reply = reply + "\r\n当前数据:伤害:"+dmg+"%,boss:"+boss+"%\r\n" + + "攻击:"+att+",攻击百分比:"+att_per+"%,\r\n面板:"+max_att+"\r\n" + + add_boss + "%boss=" + String.format("%.2f",eq_att_per) + "%攻击力=" + String.format("%.2f",eq_att) + "攻击力"; + replyMsg.setReply(reply); + return replyMsg; + } catch (Exception e) { + replyMsg.setReply("出现了一个意料之外的错误"); + e.printStackTrace(); + return replyMsg; + } + } + //怪物查询 if(raw_message.startsWith(MsbotConst.botName+"怪物")||raw_message.startsWith(MsbotConst.botName+" 怪物")) { if(raw_message.equals(MsbotConst.botName+"怪物")||raw_message.equals(MsbotConst.botName+" 怪物")) { @@ -1574,6 +1654,28 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { } RoleDmg roleDmg = roleDmgRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + RoleAtt roleAtt = roleAttRepository.findRoleBynumber(receiveMsg.getSender().getUser_id()); + + if(roleDmg==null&&roleAtt==null) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + groupMsg.setMessage("[CQ:at,qq="+ receiveMsg.getSender().getUser_id() +"]"+"未查询到攻击、伤害信息,默认伤害100,boss伤200,攻击6728(157%),面板66030797。你可通过以下指令修改信息\r\n【"+MsbotConst.botName+" 伤害50 boss300】\r\n【"+MsbotConst.botName+" 攻击6728 百分比157 面板66030797】"); + groupMsgService.sendGroupMsg(groupMsg); + }else if(roleDmg==null&&roleAtt!=null) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + groupMsg.setMessage("[CQ:at,qq="+ receiveMsg.getSender().getUser_id() +"]"+"未查询到角色信息,默认伤害100,boss伤200。你可通过指令【"+MsbotConst.botName+" 伤害50 boss300】修改角色信息"); + groupMsgService.sendGroupMsg(groupMsg); + }else if(roleDmg!=null&&roleAtt==null) { + GroupMsg groupMsg = new GroupMsg(); + groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); + groupMsg.setMessage("[CQ:at,qq="+ receiveMsg.getSender().getUser_id() +"]"+"未查询到面板信息,默认攻击6728(157%),面板66030797。你可通过指令【"+MsbotConst.botName+" 攻击6728 百分比157 面板66030797】修改角色信息"); + groupMsgService.sendGroupMsg(groupMsg); + }else { + + } + + if(roleDmg == null) { //查询无角色 roleDmg = new RoleDmg(); @@ -1590,37 +1692,72 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { roleDmg.setCommonDmg(100); roleDmg.setBossDmg(200); roleDmgRepository.save(roleDmg); - - GroupMsg groupMsg = new GroupMsg(); - groupMsg.setGroup_id(Long.parseLong(receiveMsg.getGroup_id())); - groupMsg.setMessage("[CQ:at,qq="+ receiveMsg.getSender().getUser_id() +"]"+"未查询到角色信息,默认伤害100,boss伤200。你可通过指令【"+MsbotConst.botName+" 伤害50 boss300】命令修改角色信息"); - groupMsgService.sendGroupMsg(groupMsg); } - + if(roleAtt == null) { + //查询无角色 + roleAtt = new RoleAtt(); + //设置群名片 如果没有 设置昵称 + if(receiveMsg.getSender().getCard()==null || receiveMsg.getSender().getCard().equals("")) { + roleAtt.setName(receiveMsg.getSender().getNickname()); + }else { + roleAtt.setName(receiveMsg.getSender().getCard()); + } + //设置QQ号 + roleAtt.setUser_id(receiveMsg.getSender().getUser_id()); + //设置群号 + roleAtt.setGroup_id(receiveMsg.getGroup_id()); + roleAtt.setAtt(6728); + roleAtt.setAttPer(157); + roleAtt.setMaxAtt(Long.parseLong("66030797")); + roleAttRepository.save(roleAtt); + } // shortMsg += " = " + String.format("%.2f", ign) + "%"; // shortMsg += "\r\n为防止刷屏,详细计算的部分将以私聊的形式发送于您。"; - ign2 = ign + (100-ign)*20/100; + + //攻击 攻击百分比 + int att_per = roleAtt.getAttPer(); + int att = roleAtt.getAtt(); + //面板 + Long max_att = roleAtt.getMaxAtt(); + //总伤 + int dmg = roleDmg.getCommonDmg(); + int boss = roleDmg.getBossDmg(); + + //计算如果新增40boss 相当于提升x攻击% + int add_boss = 40; + //boss面板 + float real_max_att = max_att/(100+dmg)*(100+dmg+boss); + //增加40boss后的boss面板 + float real_after_max_att = max_att/(100+dmg)*(100+dmg+boss+add_boss); + //增加40boss后的等效总攻击 + float after_att = att*real_after_max_att/real_max_att; + //等效总攻击换算为百分比 + float eq_att_per = ((float)after_att)/att*(100+att_per)-(100+att_per); + //等效攻击去除百分比 + float eq_att = (after_att-att)*100/(100+att_per); + String replyM = "你之前的无视:" + ign_before + "%(" + ign_before2 + "%)\r\n" + "计算后的无视:" + String.format("%.2f", ign) + "%(" + String.format("%.2f", ign2) + "%)\r\n"; - replyM += "角色数据 伤害:" + roleDmg.getCommonDmg() + "% boss:" + roleDmg.getBossDmg() + "%\r\n(括号为核心20%无视加成结果)\r\n"; + replyM += "角色数据 伤害:" + roleDmg.getCommonDmg() + "% boss:" + roleDmg.getBossDmg() + "%\r\n" + + "攻击:" + att + "(" + att_per + "%)" + " 面板:" + max_att + "\r\n"; replyM += "//----超高防对比-----//\r\n"; replyM += "卡琳提升率(380超高防):" + String.format("%.2f", (defAndign(380, ign)/defAndign(380, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*100) + "%)\r\n"; replyM += "原伤害" + defAndign(380, ign_before) + "%(" + defAndign(380, ign_before2) + "%)\r\n"; replyM += "现伤害" + defAndign(380, ign) + "%(" + defAndign(380, ign2) + "%)\r\n"; - replyM += "相当于提升了" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害\r\n"; + replyM += "提升" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%boss/" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att_per/add_boss) + "%攻击/" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att/add_boss)+ "攻击\r\n"; replyM += "//-----高防对比-----//\r\n"; replyM += "斯乌提升率(300高防):" + String.format("%.2f", (defAndign(300, ign)/defAndign(300, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(300, ign2)/defAndign(300, ign_before2)-1)*100) + "%)\r\n"; replyM += "原伤害" + defAndign(300, ign_before) + "%(" + defAndign(300, ign_before2) + "%)\r\n"; replyM += "现伤害" + defAndign(300, ign) + "%(" + defAndign(300, ign2) + "%)\r\n"; - replyM += "相当于提升了" + String.format("%.2f",(defAndign(300, ign)/defAndign(300, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(300, ign2)/defAndign(300, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害\r\n"; + replyM += "提升" + String.format("%.2f",(defAndign(300, ign)/defAndign(300, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%boss/" + String.format("%.2f",(defAndign(300, ign)/defAndign(300, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att_per/add_boss) + "%攻击/" + String.format("%.2f",(defAndign(300, ign)/defAndign(300, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att/add_boss)+ "攻击\r\n"; replyM += "//-----中防对比-----//\r\n"; replyM += "进阶贝伦提升率(200中防):" + String.format("%.2f", (defAndign(200, ign)/defAndign(200, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(200, ign2)/defAndign(200, ign_before2)-1)*100) + "%)\r\n"; replyM += "原伤害" + defAndign(200, ign_before) + "%(" + defAndign(200, ign_before2) + "%)\r\n"; replyM += "现伤害" + defAndign(200, ign) + "%(" + defAndign(200, ign2) + "%)\r\n"; - replyM += "相当于提升了" + String.format("%.2f",(defAndign(200, ign)/defAndign(200, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(200, ign2)/defAndign(200, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害"; + replyM += "提升" + String.format("%.2f",(defAndign(200, ign)/defAndign(200, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%boss/" + String.format("%.2f",(defAndign(200, ign)/defAndign(200, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att_per/add_boss) + "%攻击/" + String.format("%.2f",(defAndign(200, ign)/defAndign(200, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())*eq_att/add_boss)+ "攻击"; replyMsg.setReply(replyM); String reply = null; @@ -1633,11 +1770,51 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { replyMsg.setAt_sender(false); e.printStackTrace(); } +// PrivateMsg privateMsg = new PrivateMsg(); +// privateMsg.setUser_id(Long.parseLong(receiveMsg.getUser_id())); +// privateMsg.setMessage(replyM); +// groupMsgService.sendPrivateMsg(privateMsg); + return replyMsg; + + + //无视 核心20%计算 +// String replyM = "你之前的无视:" + ign_before + "%(" + ign_before2 + "%)\r\n" + "计算后的无视:" + String.format("%.2f", ign) + "%(" + String.format("%.2f", ign2) + "%)\r\n"; +// replyM += "角色数据 伤害:" + roleDmg.getCommonDmg() + "% boss:" + roleDmg.getBossDmg() + "%\r\n(括号为核心20%无视加成结果)\r\n"; +// +// replyM += "//----超高防对比-----//\r\n"; +// replyM += "卡琳提升率(380超高防):" + String.format("%.2f", (defAndign(380, ign)/defAndign(380, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*100) + "%)\r\n"; +// replyM += "原伤害" + defAndign(380, ign_before) + "%(" + defAndign(380, ign_before2) + "%)\r\n"; +// replyM += "现伤害" + defAndign(380, ign) + "%(" + defAndign(380, ign2) + "%)\r\n"; +// replyM += "相当于提升了" + String.format("%.2f",(defAndign(380, ign)/defAndign(380, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(380, ign2)/defAndign(380, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害\r\n"; +// +// replyM += "//-----高防对比-----//\r\n"; +// replyM += "斯乌提升率(300高防):" + String.format("%.2f", (defAndign(300, ign)/defAndign(300, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(300, ign2)/defAndign(300, ign_before2)-1)*100) + "%)\r\n"; +// replyM += "原伤害" + defAndign(300, ign_before) + "%(" + defAndign(300, ign_before2) + "%)\r\n"; +// replyM += "现伤害" + defAndign(300, ign) + "%(" + defAndign(300, ign2) + "%)\r\n"; +// replyM += "相当于提升了" + String.format("%.2f",(defAndign(300, ign)/defAndign(300, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(300, ign2)/defAndign(300, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害\r\n"; +// +// replyM += "//-----中防对比-----//\r\n"; +// replyM += "进阶贝伦提升率(200中防):" + String.format("%.2f", (defAndign(200, ign)/defAndign(200, ign_before)-1)*100) + "%(" + String.format("%.2f", (defAndign(200, ign2)/defAndign(200, ign_before2)-1)*100) + "%)\r\n"; +// replyM += "原伤害" + defAndign(200, ign_before) + "%(" + defAndign(200, ign_before2) + "%)\r\n"; +// replyM += "现伤害" + defAndign(200, ign) + "%(" + defAndign(200, ign2) + "%)\r\n"; +// replyM += "相当于提升了" + String.format("%.2f",(defAndign(200, ign)/defAndign(200, ign_before)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%(" + String.format("%.2f", (defAndign(200, ign2)/defAndign(200, ign_before2)-1)*(100+roleDmg.getCommonDmg()+roleDmg.getBossDmg())) + "%)点boss伤害"; +// +// replyMsg.setReply(replyM); +// String reply = null; +// try { +// reply = drawService.ignImage(replyM); +// replyMsg.setReply(reply); +// replyMsg.setAt_sender(false); +// }catch (Exception e) { +// replyMsg.setReply("图片文件缺失"); +// replyMsg.setAt_sender(false); +// e.printStackTrace(); +// } // PrivateMsg privateMsg = new PrivateMsg(); // privateMsg.setUser_id(Long.parseLong(receiveMsg.getUser_id())); // privateMsg.setMessage(replyM); // groupMsgService.sendPrivateMsg(privateMsg); - return replyMsg; +// return replyMsg; } catch (Exception e) { e.printStackTrace(); } @@ -1648,9 +1825,10 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { String reply = "//无视加算\r\n" + MsbotConst.botName + " 无视 70+50+20\r\n" + "//无视逆运算\r\n" - + MsbotConst.botName+ " 无视 90-50\r\n" + + MsbotConst.botName + " 无视 90-50\r\n" + "//修改角色属性数据\r\n" - + MsbotConst.botName+ " 伤害50 boss250"; + + MsbotConst.botName + " 伤害50 boss250\r\n" + + MsbotConst.botName + " 攻击6728 百分比157 面板66030797"; replyMsg.setReply(reply); return replyMsg; } From 69f836beb68d0c8d83cd6419eb2c6d687ac47cb4 Mon Sep 17 00:00:00 2001 From: yoyodi <7707131@qq.com> Date: Fri, 1 Mar 2024 17:43:06 +0800 Subject: [PATCH 64/66] add Erniebot --- build.gradle | 1 + .../msbot/service/ErniebotService.java | 11 ++ .../serviceImpl/ErniebotServiceImpl.java | 120 ++++++++++++++++++ .../msbot/serviceImpl/MsgServiceImpl.java | 89 +++---------- 4 files changed, 152 insertions(+), 69 deletions(-) create mode 100644 src/main/java/com/badeling/msbot/service/ErniebotService.java create mode 100644 src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java diff --git a/build.gradle b/build.gradle index 7d5fa8d..079c998 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation('org.springframework.boot:spring-boot-starter-thymeleaf') + implementation('com.squareup.okhttp3:okhttp:5.0.0-alpha.2') runtimeOnly('com.h2database:h2') runtimeOnly 'mysql:mysql-connector-java' testImplementation('org.springframework.boot:spring-boot-starter-test') diff --git a/src/main/java/com/badeling/msbot/service/ErniebotService.java b/src/main/java/com/badeling/msbot/service/ErniebotService.java new file mode 100644 index 0000000..ca81817 --- /dev/null +++ b/src/main/java/com/badeling/msbot/service/ErniebotService.java @@ -0,0 +1,11 @@ +package com.badeling.msbot.service; + +import org.springframework.stereotype.Service; + +import java.io.IOException; + + +@Service +public interface ErniebotService { + String sendErnieBotMsg(String receiveMsg) throws IOException; +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java new file mode 100644 index 0000000..cc242c9 --- /dev/null +++ b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java @@ -0,0 +1,120 @@ +package com.badeling.msbot.serviceImpl; + +import com.badeling.msbot.config.MsbotConst; +import org.json.JSONException; +import org.json.JSONObject; +import org.springframework.http.client.OkHttp3ClientHttpRequestFactory; +import org.springframework.stereotype.Component; +import com.badeling.msbot.service.ErniebotService; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.sql.Time; +import java.util.List; +import java.util.Map; +import java.util.Scanner; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import okhttp3.*; + +@Component +public class ErniebotServiceImpl implements ErniebotService { + + + static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); + + public static String getAuth() { + + + return getAuth(MsbotConst.erniebot_clientId, MsbotConst.erniebot_clientSecret); + } + public static String getAuth(String ak, String sk) { + String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; + String getAccessTokenUrl = authHost + + "grant_type=client_credentials" + + "&client_id=" + ak + + "&client_secret=" + sk; + try { + URL realUrl = new URL(getAccessTokenUrl); + HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); + connection.setRequestMethod("GET"); + connection.connect(); + Map> map = connection.getHeaderFields(); + for (String key : map.keySet()) { + String object = key + "--->" + map.get(key); + } + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String result = ""; + String line; + while ((line = in.readLine()) != null) { + result += line; + } + JSONObject jsonObject = new JSONObject(result); + String access_token = jsonObject.getString("access_token"); + return access_token; + } catch (Exception e) { + + } + return null; + } + + @Override + public String sendErnieBotMsg(String receiveMsg) throws IOException { + // ????url + try { + String accessToken = getAuth(); + + String url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token="+accessToken; + System.out.println(accessToken); + + String wordParam = "我会以“A:"+receiveMsg+" 你:xxx”的格式输入不全的聊天记录,你需要想想在这个情境下你接下来会说什么,然后补充“你:xxx”中你说的话,你补全的话题应该符合你的人设,不要讨论别的话题或试图结束聊天,你补全聊天的时候应该尽量附和之前的人说的话。你补全的风格应该较为温和,简短且口语化,切忌把话说的完整或太长,切忌使用书面语言。还有,你补全的长度应该与其他人发信息的长度差不多,尽量简短,要尽可能口语化。说话结尾要带个喵字。不要随意透露你的个人信息。记住用简体中文回答。最后,你必须把你的回答精简到20字以内,并输出。"; + + String content = "{\"messages\":[{\"role\":\"user\",\"content\":\"" + +wordParam + +"\"}],\"temperature\":0.95,\"top_p\":0.7,\"penalty_score\":1," + +"\"system\":\"你是一只沙丘猫,别人也喊你蠢猫。你在一个聊冒险岛游戏的QQ群中。\"," + +"\"disable_search\":false,\"enable_citation\":false}"; + System.out.println(content); + + + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, content); + + Request request = new Request.Builder() + .url(url) + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + + Response response = HTTP_CLIENT.newCall(request).execute(); + String responseData = response.body().string(); + System.out.println(responseData); + + + JSONObject jsonObject = new JSONObject(responseData); + String result = jsonObject.getString("result"); + System.out.println(result); + + int startIndex = result.indexOf("你:"); + if (startIndex != -1) { + startIndex += 2; + result = result.substring(startIndex); + } + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + +} diff --git a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java index 1857db0..1106676 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/MsgServiceImpl.java @@ -53,6 +53,10 @@ public class MsgServiceImpl implements MsgService{ @Autowired private RecordService recordService; + + @Autowired + private ErniebotService erniebotService; + @Autowired private DrawService drawService; @Autowired @@ -231,7 +235,6 @@ public static int getResult(String A, String B) { if(A.equals(B)) { return 0; } - //dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数 int[][] dp = new int[A.length() + 1][B.length() + 1]; for(int i = 1;i <= A.length();i++) dp[i][0] = i; @@ -253,7 +256,6 @@ public static int getResult(String A, String B) { @Override public synchronized ReplyMsg receive(String msg) { ReceiveMsg receiveMsg = null; - //判定是否有重复请求 TreeSet msgList = GlobalVariable.getMsgList(); if(msgList.contains(msg)) { return null; @@ -283,7 +285,6 @@ public synchronized ReplyMsg receive(String msg) { NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); return handLeave(noticeMsg); }else if(msg.contains("\"notice_type\":\"group_card\"")) { - //修改群名片的事件 但目前使用的版本没有上传该事件 故暂时搁置 // NoticeMsg noticeMsg = new ObjectMapper().readValue(msg, NoticeMsg.class); // return handModifyCard(noticeMsg); return null; @@ -293,13 +294,7 @@ public synchronized ReplyMsg receive(String msg) { } catch (IOException e) { e.printStackTrace(); } - //私聊 - //if(receiveMsg.getMessage_type().equals("private")&&receiveMsg.getUser_id().equals(MsbotConst.masterId)) { - // System.err.println(receiveMsg.toString()); - // return handlePrivateMsg(receiveMsg); - // } - //接收消息统计 try { int length = receiveMsg.getRaw_message().length(); if(length>2000) { @@ -2835,7 +2830,7 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { if(raw_message.replace(" ", "").equals(MsbotConst.botName)) { replyMsg.setAuto_escape(false); replyMsg.setAt_sender(false); - replyMsg.setReply("(ノ゚▽゚)ノ我在哦~"); + replyMsg.setReply("(??▽?)?我在哦~"); return replyMsg; } @@ -2985,67 +2980,23 @@ private ReplyMsg handleNameMsg(ReceiveMsg receiveMsg) { return replyMsg; } - if(MsbotConst.moliKey2!=null&&MsbotConst.moliSecret2!=null&&!MsbotConst.moliKey2.isEmpty()&&!MsbotConst.moliSecret2.isEmpty()) { - if(!raw_message.contains("[CQ")) { - String tuLingMsg = groupMsgService.MoliMsg2(command, Math.abs(receiveMsg.getUser_id().hashCode())+"", receiveMsg.getSender().getNickname()); - @SuppressWarnings("unchecked") - Map result = (Map) JSON.parse(tuLingMsg); - System.out.println(tuLingMsg); - if((result.get("message")+"").contains("请求成功")) { - String reply = tuLingMsg.substring(tuLingMsg.indexOf("content")+10,tuLingMsg.indexOf("\",\"typed\":")); - replyMsg.setReply(reply); - return replyMsg; - } - } - } - - - -// if(!raw_message.contains("[CQ")) { -// //图灵机器人 -// HashMap map = new HashMap<>(); -// //reqType -// map.put("reqType", 0); -// //perception 内容 -// HashMap textMap = new HashMap<>(); -// HashMap contentMap = new HashMap<>(); -// contentMap.put("text", raw_message); -// textMap.put("inputText", contentMap); -// map.put("perception", textMap); -// //key -// HashMap userMap = new HashMap<>(); -// userMap.put("apiKey", ); -// userMap.put("userId",Math.abs(receiveMsg.getSender().getUser_id().hashCode()) +""); -// map.put("userInfo", userMap); -// //消息传给图灵 -// String json = JSONObject.toJSONString(map); -// System.out.println(json); -// String tuLingMsg = groupMsgService.tuLingMsg(json); -// System.out.println(tuLingMsg); -// //图灵消息返回 读取消息 -// @SuppressWarnings("unchecked") -// Map result = (Map) JSON.parse(tuLingMsg); -// -// @SuppressWarnings("unchecked") -// Map intent = (Map) result.get("intent"); -// Integer code = (Integer) intent.get("code"); -// if(code>9000||code<3000) { -// @SuppressWarnings("unchecked") -// List> results = (List>) result.get("results"); -// String finalResult = ""; -// for(Map temp : results) { -// @SuppressWarnings("unchecked") -// Map object = (Map) temp.get("values"); -// finalResult += object.get("text"); -// } -// replyMsg.setAt_sender(true); -// replyMsg.setReply(finalResult); -// return replyMsg; -// } -// } -// + if(raw_message.startsWith(MsbotConst.botName)){ + raw_message = raw_message.substring(raw_message.indexOf(MsbotConst.botName)+2); + raw_message = raw_message.replaceAll("\r","."); + raw_message = raw_message.replaceAll("\n","."); + System.out.println(raw_message.toString()); + try { + String result = erniebotService.sendErnieBotMsg(raw_message); + replyMsg.setReply(result); + } catch (Exception e) { + e.printStackTrace(); + replyMsg.setReply("失败"); + } + replyMsg.setAt_sender(false); + return replyMsg; + } Random r = new Random(); int random = r.nextInt(6) + 1; From 14af33e69ba3a6ecad53a52227bd10a9da9b9b90 Mon Sep 17 00:00:00 2001 From: yoyodi <7707131@qq.com> Date: Thu, 11 Apr 2024 09:26:00 +0800 Subject: [PATCH 65/66] fix ErnieBotMsg --- .../badeling/msbot/serviceImpl/ErniebotServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java index cc242c9..c5dda43 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java @@ -103,10 +103,10 @@ public String sendErnieBotMsg(String receiveMsg) throws IOException { String result = jsonObject.getString("result"); System.out.println(result); - int startIndex = result.indexOf("你:"); - if (startIndex != -1) { - startIndex += 2; - result = result.substring(startIndex); + + int lastIndex = result.lastIndexOf("你:"); + if (lastIndex != -1) { + result = result.substring(lastIndex + result.length()); } return result; } catch (Exception e) { From a24f7473aedee7b25906104c51c0a529bd51c927 Mon Sep 17 00:00:00 2001 From: yoyodi <7707131@qq.com> Date: Thu, 11 Apr 2024 09:37:22 +0800 Subject: [PATCH 66/66] fix sendErnieBotMsg --- .../com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java index c5dda43..508bc5e 100644 --- a/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java +++ b/src/main/java/com/badeling/msbot/serviceImpl/ErniebotServiceImpl.java @@ -106,7 +106,7 @@ public String sendErnieBotMsg(String receiveMsg) throws IOException { int lastIndex = result.lastIndexOf("你:"); if (lastIndex != -1) { - result = result.substring(lastIndex + result.length()); + result = result.substring(lastIndex + 2); } return result; } catch (Exception e) {