更新QQ框架到2.0.0-dev-2
新增查询动画功能(QQ) 新增每日8点播报当日番剧功能(QQ) 音乐定时扫描代码移动到初始化创建的定时器中
This commit is contained in:
parent
b0f3f26728
commit
34dc1c2210
4
pom.xml
4
pom.xml
@ -108,8 +108,8 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.mamoe</groupId>
|
||||
<artifactId>mirai-core-qqandroid</artifactId>
|
||||
<version>1.3.3</version> <!-- 替换版本为最新版本 -->
|
||||
<artifactId>mirai-core-jvm</artifactId>
|
||||
<version>2.0.0-dev-2</version> <!-- 替换版本为你需要的版本 -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
|
@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class ToolsApplication {
|
||||
public static final String version="1.0.14.2";
|
||||
public static final String version="1.0.15";
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("当前版本号:"+version);
|
||||
|
@ -5,31 +5,41 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.tools.utils.HttpTools;
|
||||
import com.yutou.tools.utils.RedisTools;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class BangumiTools {
|
||||
private static final String url = "http://api.bgm.tv/";
|
||||
private static final String toDayBangumi = url + "calendar";
|
||||
private static final String BangumiInfo = url + "/subject/%s?responseGroup=large";
|
||||
private static final String SearchBangumi = url + "/search/subject/%s?responseGroup=large";
|
||||
|
||||
/**
|
||||
* 获取番剧列表
|
||||
*
|
||||
* @param day 周几,-1为全部,非1~7范围则为当天
|
||||
* @return 当日数据
|
||||
*/
|
||||
public static JSONObject getBangumi(int day) {
|
||||
String str = HttpTools.get(toDayBangumi);
|
||||
JSONArray main = JSONArray.parseArray(str);
|
||||
if(day==-1){
|
||||
JSONObject json=new JSONObject();
|
||||
json.put("bangumi",main);
|
||||
if (day == -1) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("bangumi", main);
|
||||
return json;
|
||||
}
|
||||
if(day<1||day>7) {
|
||||
if (day < 1 || day > 7) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
|
||||
calendar.setFirstDayOfWeek(Calendar.MONDAY);
|
||||
calendar.setTime(new Date());
|
||||
day=calendar.get(Calendar.DAY_OF_WEEK);
|
||||
day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
|
||||
if (day == 0) {
|
||||
day = 7;
|
||||
}
|
||||
}
|
||||
if (main != null)
|
||||
for (Object o : main) {
|
||||
@ -43,23 +53,238 @@ public class BangumiTools {
|
||||
|
||||
/**
|
||||
* 获取番剧详细信息
|
||||
*
|
||||
* @param id 剧集id
|
||||
* @return 详细信息
|
||||
*/
|
||||
public static JSONObject getBangumiInfo(int id){
|
||||
String str = HttpTools.get(String.format(BangumiInfo,id+""));
|
||||
JSONObject main = JSONObject.parseObject(str);
|
||||
return main;
|
||||
public static JSONObject getBangumiInfo(int id) {
|
||||
String str = HttpTools.get(String.format(BangumiInfo, id + ""));
|
||||
return JSONObject.parseObject(str);
|
||||
}
|
||||
|
||||
public static void reportToDayBangumi(){
|
||||
if(!RedisTools.get("reportToDayBangumi").equals("true")){
|
||||
JSONObject toDay=getBangumi(0);
|
||||
/**
|
||||
* 搜索番剧
|
||||
*
|
||||
* @param key 关键词
|
||||
* @return 详细信息
|
||||
*/
|
||||
public static JSONObject search(String key) {
|
||||
String str = HttpTools.get(String.format(SearchBangumi, key));
|
||||
return JSONObject.parseObject(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下一集播放日期
|
||||
*
|
||||
* @param id 番剧id
|
||||
* @return 日期
|
||||
*/
|
||||
public static String getPlayNextTime(int id) {
|
||||
JSONObject info = getBangumiInfo(id);
|
||||
JSONArray eps = info.getJSONArray("eps");
|
||||
String toDayTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||
for (Object o : eps) {
|
||||
JSONObject ep = (JSONObject) o;
|
||||
String time = ep.getString("airdate");
|
||||
try {
|
||||
if (new SimpleDateFormat("yyyy-MM-dd").parse(time).getTime() >=
|
||||
new SimpleDateFormat("yyyy-MM-dd").parse(toDayTime).getTime()) {
|
||||
return time;
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化字符串输出番剧详细信息
|
||||
*
|
||||
* @param id 番剧id
|
||||
* @return 详细内容
|
||||
*/
|
||||
public static String reportBangumiInfo(int id) {
|
||||
JSONObject json = getBangumiInfo(id);
|
||||
if(json.containsKey("code")){
|
||||
return json.getString("error");
|
||||
}
|
||||
JSONArray eps = json.getJSONArray("eps");
|
||||
JSONArray crts = json.getJSONArray("crt");
|
||||
JSONArray staffs = json.getJSONArray("staff");
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("<img ").append(json.getJSONObject("images").getString("large")).append(" /img>").append("\n");
|
||||
builder.append("标题:").append(json.getString("name_cn")).append("\n");
|
||||
builder.append("日文标题:").append(json.getString("name")).append("\n");
|
||||
builder.append("首播时间:").append(json.getString("air_date")).append("\n");
|
||||
builder.append("每周").append(json.getInteger("air_weekday")).append("放送").append("\n");
|
||||
builder.append("Bangumi地址:").append(json.getString("url")).append("\n");
|
||||
builder.append("Bangumi评分:").append(json.getJSONObject("rating").getFloat("score")).append("\n");
|
||||
builder.append("预计放送集数:").append(json.getInteger("eps_count")).append("\n");
|
||||
if (eps != null) {
|
||||
builder.append("已放送集:").append("\n");
|
||||
for (Object o : eps) {
|
||||
JSONObject ep = (JSONObject) o;
|
||||
if (ep.getString("status").equals("Air")) {
|
||||
builder.append("· 第").append(ep.getInteger("sort")).append("话:");
|
||||
builder.append(ep.getString("name"));
|
||||
builder.append("[").append(ep.getString("name_cn")).append("]").append("\n");
|
||||
builder.append("播放日期:").append(ep.getString("airdate")).append(";\n");
|
||||
builder.append("播放时长:").append(ep.getString("duration")).append(";\n");
|
||||
builder.append("单集介绍:").append(ep.getString("desc"));
|
||||
builder.append("\n\n");
|
||||
} else {
|
||||
builder.append("下一话:");
|
||||
builder.append(" 第").append(ep.getInteger("sort")).append("话:");
|
||||
builder.append("播放日期:").append(ep.getString("airdate")).append("\n\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (crts != null) {
|
||||
builder.append("角色介绍:").append("\n");
|
||||
for (Object o : crts) {
|
||||
JSONObject crt = (JSONObject) o;
|
||||
JSONObject info = crt.getJSONObject("info");
|
||||
builder.append(crt.getString("role_name")).append(":");
|
||||
builder.append(crt.getString("name"));
|
||||
builder.append("(").append(crt.getString("name_cn")).append(")").append(" ");
|
||||
builder.append("CV:").append(crt.getJSONArray("actors").getJSONObject(0).getString("name"));
|
||||
builder.append("(").append(info.getString("gender")).append(")");
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
Map<String, List<JSONObject>> map = new HashMap<>();
|
||||
for (Object o : staffs) {
|
||||
JSONObject staff = (JSONObject) o;
|
||||
for (Object jobs : staff.getJSONArray("jobs")) {
|
||||
String job = (String) jobs;
|
||||
List<JSONObject> list;
|
||||
if (!map.containsKey(job)) {
|
||||
list = new ArrayList<>();
|
||||
} else {
|
||||
list = map.get(job);
|
||||
}
|
||||
list.add(staff);
|
||||
map.put(job, list);
|
||||
}
|
||||
}
|
||||
if (!map.isEmpty()) {
|
||||
builder.append("staff:").append("\n");
|
||||
for (String key : map.keySet()) {
|
||||
builder.append(key).append(":");
|
||||
for (JSONObject staff : map.get(key)) {
|
||||
builder.append(staff.getString("name_cn"));
|
||||
builder.append("(").append(staff.getString("name")).append(")");
|
||||
builder.append("、");
|
||||
}
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化字符串输出今日播放番剧列表
|
||||
*
|
||||
* @return 番剧列表
|
||||
*/
|
||||
public static String reportToDayBangumi() {
|
||||
if (!RedisTools.get("reportToDayBangumi").equals("true")) {
|
||||
RedisTools.set("reportToDayBangumi", "true");
|
||||
StringBuilder builder = new StringBuilder();
|
||||
JSONObject toDay = getBangumi(0);
|
||||
if (toDay == null) {
|
||||
builder.append("今天没有任何番剧放送~");
|
||||
} else {
|
||||
JSONObject weekday = toDay.getJSONObject("weekday");
|
||||
JSONArray items = toDay.getJSONArray("items");
|
||||
builder.append("今日 ").append(weekday.get("cn")).append("(").append(weekday.get("ja")).append(")");
|
||||
builder.append(" 放送列表:").append("\n");
|
||||
int epIndex = 0;
|
||||
String epName = "N/A";
|
||||
for (Object o : items) {
|
||||
JSONObject item = (JSONObject) o;
|
||||
builder.append("[").append(item.getInteger("id")).append("]");
|
||||
builder.append(item.getString("name_cn"));
|
||||
JSONArray eps = getBangumiInfo(item.getInteger("id")).getJSONArray("eps");
|
||||
for (Object oe : eps) {
|
||||
JSONObject ep = (JSONObject) oe;
|
||||
if (ep.getString("status").equals("Air")) {
|
||||
epIndex = ep.getInteger("sort");
|
||||
epName = ep.getString("name");
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
builder.append(" 第").append(epIndex).append("话:");
|
||||
builder.append(epName);
|
||||
builder.append("\n");
|
||||
}
|
||||
}
|
||||
RedisTools.set("toDayBangumi", builder.toString());
|
||||
return builder.toString();
|
||||
} else {
|
||||
return RedisTools.get("toDayBangumi");
|
||||
}
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
|
||||
System.out.println(getBangumiInfo(293193));
|
||||
/**
|
||||
* 格式化字符串输出搜索动画
|
||||
*
|
||||
* @param key 关键词
|
||||
* @return 详细内容
|
||||
*/
|
||||
public static String reportSearchBangumi(String key) {
|
||||
JSONObject main = search(key);
|
||||
if (main.getInteger("results") > 0) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
List<JSONObject> list = main.getJSONArray("list").toJavaList(JSONObject.class);
|
||||
Collections.reverse(list);
|
||||
for (Object items : list) {
|
||||
JSONObject item = (JSONObject) items;
|
||||
builder.append("标题:").append(item.getString("name_cn")).append("\n");
|
||||
builder.append("日文标题:").append(item.getString("name")).append("\n");
|
||||
String type;
|
||||
switch (item.getInteger("type")) {
|
||||
case 1:
|
||||
type = "书籍";
|
||||
break;
|
||||
case 2:
|
||||
type = "动画";
|
||||
break;
|
||||
case 3:
|
||||
type = "音乐";
|
||||
break;
|
||||
case 4:
|
||||
type = "游戏";
|
||||
break;
|
||||
case 6:
|
||||
type = "真人剧(Real)";
|
||||
break;
|
||||
default:
|
||||
type = item.getInteger("type") + "";
|
||||
}
|
||||
builder.append("类型:").append(type).append("\n");
|
||||
builder.append("id:").append(item.getInteger("id")).append("\n");
|
||||
if (item.containsKey("rating"))
|
||||
builder.append("Bangumi评分:").append(item.getJSONObject("rating").getFloat("score")).append("\n");
|
||||
builder.append("首播时间:").append(item.getString("air_date")).append("\n");
|
||||
builder.append("每周 ").append(item.getInteger("air_weekday")).append(" 放送").append("\n");
|
||||
builder.append("放送集数:").append(item.getInteger("eps")).append("\n");
|
||||
builder.append("Bangumi地址:").append(item.getString("url")).append("\n");
|
||||
builder.append("介绍:").append(item.getString("summary")).append("\n");
|
||||
builder.append("\n").append("\n");
|
||||
}
|
||||
return builder.toString();
|
||||
} else {
|
||||
return "搜索不到任何内容:" + key;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String str = reportBangumiInfo(262897);
|
||||
System.out.println(str);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,10 @@ import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/**
|
||||
* 服务启动后执行
|
||||
@ -16,5 +20,20 @@ public class ApplicationInit implements ApplicationRunner {
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
musicTools.init();//初始化音乐库
|
||||
new Timer().schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
String time = new SimpleDateFormat("HH:mm").format(new Date());
|
||||
switch (time){
|
||||
case "00:00":
|
||||
musicTools.scanMusic();
|
||||
break;
|
||||
case "08:00":
|
||||
QQBotManager.getInstance().reportToDayBangumi();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
},0,10 * 1000);
|
||||
}
|
||||
}
|
||||
|
@ -51,16 +51,6 @@ public class MusicTools implements MusicToolsService {
|
||||
public void init() {
|
||||
musicPath = (String) ConfigTools.load(ConfigTools.CONFIG, "musicDir");
|
||||
scanMusic();
|
||||
new Timer().schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
String time = new SimpleDateFormat("HH:mm").format(new Date());
|
||||
if (time.equals("00:00")) {
|
||||
System.out.println("零点刷新列表");
|
||||
scanMusic();
|
||||
}
|
||||
}
|
||||
}, 0, 10 * 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,26 +1,40 @@
|
||||
package com.yutou.tools.utils;
|
||||
|
||||
import com.yutou.tools.ToolsApplication;
|
||||
import kotlin.coroutines.CoroutineContext;
|
||||
import com.yutou.tools.bangumi.BangumiTools;
|
||||
import com.yutou.tools.interfaces.DownloadInterface;
|
||||
import net.mamoe.mirai.Bot;
|
||||
import net.mamoe.mirai.BotFactoryJvm;
|
||||
import net.mamoe.mirai.contact.Contact;
|
||||
import net.mamoe.mirai.event.EventHandler;
|
||||
import net.mamoe.mirai.event.Events;
|
||||
import net.mamoe.mirai.event.ListeningStatus;
|
||||
import net.mamoe.mirai.event.SimpleListenerHost;
|
||||
import net.mamoe.mirai.message.GroupMessageEvent;
|
||||
import net.mamoe.mirai.message.MessageEvent;
|
||||
import net.mamoe.mirai.message.MessageReceipt;
|
||||
import net.mamoe.mirai.BotFactory;
|
||||
import net.mamoe.mirai.event.GlobalEventChannel;
|
||||
import net.mamoe.mirai.event.events.GroupMessageEvent;
|
||||
import net.mamoe.mirai.message.data.Image;
|
||||
import net.mamoe.mirai.message.data.MessageChain;
|
||||
import net.mamoe.mirai.message.data.MessageUtils;
|
||||
import net.mamoe.mirai.message.data.MessageChainBuilder;
|
||||
import net.mamoe.mirai.utils.BotConfiguration;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import net.mamoe.mirai.utils.ExternalResource;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class QQBotManager {
|
||||
|
||||
|
||||
private static class QQCommands {
|
||||
private final static String QQ_HELP = "!help";
|
||||
private final static String QQ_UPDATE_IP = "!更新ip";
|
||||
private final static String QQ_GET_IP = "!ip";
|
||||
private final static String QQ_OPEN_PC = "!开机";
|
||||
private final static String QQ_GET_VERSION = "!version";
|
||||
private final static String QQ_CMD = "!cmd";
|
||||
private final static String QQ_BANGUMI_TODAY = "!今日动画";
|
||||
private final static String QQ_BANGUMI_SUB = "!查动画";
|
||||
}
|
||||
|
||||
private static QQBotManager botManager = null;
|
||||
private Bot bot;
|
||||
private static final long qqGroup = 891655174L;
|
||||
@ -29,8 +43,8 @@ public class QQBotManager {
|
||||
private QQBotManager() {
|
||||
Object isRun = ConfigTools.load(ConfigTools.CONFIG, "qq_bot");
|
||||
if (isRun != null && (boolean) isRun) {
|
||||
init();
|
||||
isLogin = true;
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,8 +59,9 @@ public class QQBotManager {
|
||||
password = "UAs6YBYMyxJU";
|
||||
}
|
||||
|
||||
bot = BotFactoryJvm.newBot(qq, password, new BotConfiguration() {
|
||||
bot = BotFactory.INSTANCE.newBot(qq, password, new BotConfiguration() {
|
||||
{
|
||||
setProtocol(MiraiProtocol.ANDROID_PAD);
|
||||
fileBasedDeviceInfo("qq_bot_devices_info.json");
|
||||
if (ConfigTools.load(ConfigTools.CONFIG, "model").equals("nas")) {
|
||||
noBotLog();
|
||||
@ -54,10 +69,22 @@ public class QQBotManager {
|
||||
}
|
||||
}
|
||||
});
|
||||
Events.registerEvents(bot, new MessageListener());
|
||||
|
||||
//Events.registerEvents(bot, new MessageListener());
|
||||
GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, new MessageListener());
|
||||
bot.login();
|
||||
sendMessage("姬妻酱上线拉~");
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String str=sendMessage("姬妻酱上线拉~");
|
||||
System.out.println(str);
|
||||
|
||||
}
|
||||
}).start();
|
||||
bot.join();
|
||||
|
||||
}
|
||||
@ -76,15 +103,25 @@ public class QQBotManager {
|
||||
return isLogin;
|
||||
}
|
||||
|
||||
private Image getImage(File file) {
|
||||
if (bot != null) {
|
||||
return Objects.requireNonNull(bot.getGroup(qqGroup)).uploadImage(ExternalResource.create(file));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getNotLoginQQ() {
|
||||
return "没有登录QQ";
|
||||
}
|
||||
|
||||
public void reportToDayBangumi() {
|
||||
getInstance().sendMessage(BangumiTools.reportToDayBangumi());
|
||||
}
|
||||
public String sendMessage(String text) {
|
||||
if (bot != null) {
|
||||
try {
|
||||
MessageReceipt<Contact> receipt = bot.getGroup(qqGroup).sendMessage(text);
|
||||
return receipt.toString();
|
||||
System.out.println("发送QQ");
|
||||
return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(text).toString();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -93,66 +130,153 @@ public class QQBotManager {
|
||||
}
|
||||
|
||||
public String sendMessage(File imageFile, String text) {
|
||||
try {
|
||||
if (bot != null) {
|
||||
Image image = getImage(imageFile);
|
||||
MessageChainBuilder builder = new MessageChainBuilder();
|
||||
if (image != null) {
|
||||
builder.append(image);
|
||||
}
|
||||
builder.append(text);
|
||||
return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(builder.asMessageChain()).toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return getNotLoginQQ();
|
||||
}
|
||||
|
||||
public String sendMessage(List<File> imgs, String text) {
|
||||
if (bot != null) {
|
||||
Image image = bot.getGroup(qqGroup).uploadImage(imageFile);
|
||||
MessageChain chain = MessageUtils.newImage(image.getImageId()).plus(text);
|
||||
MessageReceipt<Contact> receipt = bot.getGroup(qqGroup).sendMessage(chain);
|
||||
return receipt.toString();
|
||||
MessageChainBuilder builder = new MessageChainBuilder();
|
||||
for (File img : imgs) {
|
||||
builder.append(Objects.requireNonNull(getImage(img)));
|
||||
}
|
||||
builder.append(text);
|
||||
return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(builder.asMessageChain()).toString();
|
||||
}
|
||||
return getNotLoginQQ();
|
||||
}
|
||||
|
||||
public static List<String> getImages(String str) {
|
||||
List<String> list = new ArrayList<>();
|
||||
String regex = "<img(.*?)/img>";
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(str);
|
||||
while (matcher.find()) {
|
||||
list.add(matcher.group().replace("<img", "")
|
||||
.replace("/img>", "")
|
||||
.trim());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
getInstance();
|
||||
}
|
||||
|
||||
private static class MessageListener extends SimpleListenerHost {
|
||||
@Override
|
||||
public void handleException(@NotNull CoroutineContext context, @NotNull Throwable exception) {
|
||||
super.handleException(context, exception);
|
||||
System.out.println("error: " + exception.getLocalizedMessage());
|
||||
}
|
||||
private static class MessageListener implements Consumer<GroupMessageEvent> {
|
||||
|
||||
@EventHandler
|
||||
public ListeningStatus onGroupMessage(GroupMessageEvent event) {
|
||||
@Override
|
||||
public void accept(GroupMessageEvent event) {
|
||||
if (event.getGroup().getId() == qqGroup) {
|
||||
String msg = event.getMessage().contentToString();
|
||||
msg = msg.replace("!", "!").toLowerCase();
|
||||
switch (msg) {
|
||||
case "!开机":
|
||||
case QQCommands.QQ_OPEN_PC:
|
||||
RedisTools.Consumer.system("openPC", null);
|
||||
break;
|
||||
case "!更新ip":
|
||||
case QQCommands.QQ_UPDATE_IP:
|
||||
RedisTools.Consumer.system("updateIP", null);
|
||||
break;
|
||||
case "!ip":
|
||||
case QQCommands.QQ_GET_IP:
|
||||
RedisTools.Consumer.bot("getip");
|
||||
break;
|
||||
case "!version":
|
||||
case QQCommands.QQ_GET_VERSION:
|
||||
sendVersion();
|
||||
break;
|
||||
case QQCommands.QQ_BANGUMI_TODAY:
|
||||
QQBotManager.getInstance().sendMessage(BangumiTools.reportToDayBangumi());
|
||||
break;
|
||||
case QQCommands.QQ_HELP:
|
||||
StringBuilder builder=new StringBuilder();
|
||||
for (Field field : QQCommands.class.getDeclaredFields()) {
|
||||
try {
|
||||
field.setAccessible(true);
|
||||
builder.append(field.get(null)).append("\n");
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
getInstance().sendMessage(builder.toString());
|
||||
break;
|
||||
default:
|
||||
if (msg.startsWith("!cmd")) {
|
||||
RedisTools.Consumer.system("cmd", msg.replace("!cmd", ""));
|
||||
if (msg.startsWith(QQCommands.QQ_CMD)) {
|
||||
RedisTools.Consumer.system("cmd", msg.replace(QQCommands.QQ_CMD, ""));
|
||||
} else if (msg.startsWith(QQCommands.QQ_BANGUMI_SUB)) {
|
||||
String info = null;
|
||||
try {
|
||||
int id = Integer.parseInt(msg.replace(QQCommands.QQ_BANGUMI_SUB, "").trim());
|
||||
info = BangumiTools.reportBangumiInfo(id);
|
||||
} catch (Exception e) {
|
||||
String key=msg.replace(QQCommands.QQ_BANGUMI_SUB, "").trim();
|
||||
info = BangumiTools.reportSearchBangumi(key);
|
||||
}
|
||||
List<String> imgs=new ArrayList<>();
|
||||
if (info.contains("<img") && info.contains(" /img>")) {
|
||||
imgs = getImages(info);
|
||||
for (String img : imgs) {
|
||||
info=info.replace("<img "+img+" /img>","");
|
||||
}
|
||||
}
|
||||
sendImagesMsg(imgs,info);
|
||||
}
|
||||
}
|
||||
}/*else{
|
||||
sendMessage("群:"+event.getGroup().getId()+" 发来消息:\n"+event.getMessage().contentToString());
|
||||
}*/
|
||||
return ListeningStatus.LISTENING;
|
||||
}
|
||||
private List<File> files;
|
||||
private int index=0;
|
||||
private void sendImagesMsg(List<String> imgs,String text){
|
||||
files=new ArrayList<>();
|
||||
index=0;
|
||||
if(imgs.size()==0){
|
||||
getInstance().sendMessage(text);
|
||||
return;
|
||||
}
|
||||
for (String img : imgs) {
|
||||
Tools.download(img, new DownloadInterface() {
|
||||
@Override
|
||||
public void onDownload(String file) {
|
||||
super.onDownload(file);
|
||||
files.add(new File(file));
|
||||
send(imgs.size(), text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception e) {
|
||||
super.onError(e);
|
||||
index++;
|
||||
send(imgs.size(),text);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
private void send(int size,String text){
|
||||
if((files.size()+index)==size){
|
||||
String str= getInstance().sendMessage(files,text);
|
||||
System.out.println("str = "+str);
|
||||
}
|
||||
}
|
||||
private void sendVersion() {
|
||||
String localVersion= ToolsApplication.version;
|
||||
String serverVersion=HttpTools.get("http://tools.yutou233.cn:8000/public/version.do?token=zIrsh9TUZP2lfRW753PannG49E7VJvor");
|
||||
String msg="本地版本:"+localVersion+"\n"+"服务器版本:"+serverVersion;
|
||||
String localVersion = ToolsApplication.version;
|
||||
String serverVersion = HttpTools.get("http://tools.yutou233.cn:8000/public/version.do?token=zIrsh9TUZP2lfRW753PannG49E7VJvor");
|
||||
String msg = "本地版本:" + localVersion + "\n" + "服务器版本:" + serverVersion;
|
||||
QQBotManager.getInstance().sendMessage(msg);
|
||||
Tools.sendServer("服务版本查询",msg);
|
||||
Tools.sendServer("服务版本查询", msg);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onMessage(@NotNull MessageEvent event) throws Exception {
|
||||
// sendMessage("个人:"+event.getSender().getNick()+" 发来消息:"+event.getMessage().contentToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,6 +93,9 @@ public class RedisTools {
|
||||
if (jedis != null)
|
||||
jedis.close();
|
||||
}
|
||||
if(value==null){
|
||||
value="-999";
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user