增加大头菜对群的支持

Model新增识别群并@发送人的方法
This commit is contained in:
Yutousama 2022-01-02 10:47:48 +08:00
parent 8f19448239
commit ba7b933bdb
3 changed files with 48 additions and 24 deletions

View File

@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication
public class QQBotApplication { public class QQBotApplication {
public static final String version="QQBot v.1.2.5"; public static final String version="QQBot v.1.2.6";
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("version = " + version); System.out.println("version = " + version);
SpringApplication.run(QQBotApplication.class, args); SpringApplication.run(QQBotApplication.class, args);

View File

@ -54,29 +54,39 @@ public class TurnipProphet extends Model {
}; };
} }
Long user, sendQQ;
@Override @Override
public void onMessage(Long qq, MessageEvent event, boolean isGroup) { public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
super.onMessage(qq, event, isGroup); super.onMessage(qq, event, isGroup);
user = qq;
sendQQ = qq;
if (isGroup) { if (isGroup) {
return; if (!event.getMessage().serializeToMiraiCode().contains("[mirai:at:3620756944]")) {
return;
}
user = event.getSource().getFromId();
} }
int money = -1; int money = -1;
try { try {
if (isGroup) {
msg = msg.replace("@3620756944", "");
}
money = Integer.parseInt(msg.trim()); money = Integer.parseInt(msg.trim());
} catch (Exception e) { } catch (Exception e) {
if (msg.equals(QQFromCommands.TURNIP_PROPHET)) { if (msg.equals(QQFromCommands.TURNIP_PROPHET)) {
showData(event.getSource().getFromId()); showData();
} }
return; return;
} }
setData(money, event.getSource().getFromId()); setData(money);
} }
private void showData(long qq) { private void showData() {
String redisKey = qq + "_turnip"; String redisKey = user + "_turnip";
String data = RedisTools.get(redisKey); String data = RedisTools.get(redisKey);
if (StringUtils.isEmpty(data)) { if (StringUtils.isEmpty(data)) {
QQBotManager.getInstance().sendMessage(qq, "没有本周数据,无法预测"); QQBotManager.getInstance().sendMessage(sendQQ, getMessage("没有本周数据,无法预测"));
return; return;
} }
JSONObject json = JSONObject.parseObject(data); JSONObject json = JSONObject.parseObject(data);
@ -99,16 +109,16 @@ public class TurnipProphet extends Model {
Map<String, String> map = null; Map<String, String> map = null;
try { try {
map = openTurnip(prices, pattern); map = openTurnip(prices, pattern);
sendQQ(map, prices, pattern, qq); sendQQ(map, prices, pattern);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
showData(qq); showData();
} }
} }
private void setData(int money, long qq) { private void setData(int money) {
String redisKey = qq + "_turnip"; String redisKey = user + "_turnip";
String data = RedisTools.get(redisKey); String data = RedisTools.get(redisKey);
String pattern = null; String pattern = null;
JSONObject json; JSONObject json;
@ -137,7 +147,7 @@ public class TurnipProphet extends Model {
array = json.getJSONArray("turnip"); array = json.getJSONArray("turnip");
} }
if (array.getInteger(0) == -1 && getDay() != 0) { if (array.getInteger(0) == -1 && getDay() != 0) {
QQBotManager.getInstance().sendMessage(qq, "没有周日买入信息,本周不收录 :("); QQBotManager.getInstance().sendMessage(sendQQ, getMessage("没有周日买入信息,本周不收录 :("));
return; return;
} }
if (json.containsKey("old_pattern")) { if (json.containsKey("old_pattern")) {
@ -186,13 +196,13 @@ public class TurnipProphet extends Model {
case "小幅上涨(四期型)" -> pattern = "3"; case "小幅上涨(四期型)" -> pattern = "3";
} }
} }
QQBotManager.getInstance().sendMessage(qq, "已记录,正在预测本周走势..."); QQBotManager.getInstance().sendMessage(sendQQ, getMessage("已记录,正在预测本周走势..."));
Map<String, String> map = openTurnip(prices, pattern); Map<String, String> map = openTurnip(prices, pattern);
if (map == null) { if (map == null) {
map = openTurnip(prices, pattern); map = openTurnip(prices, pattern);
} }
String tmp_pattern = sendQQ(map, prices, pattern, qq); String tmp_pattern = sendQQ(map, prices, pattern);
if (!StringUtils.isEmpty(tmp_pattern)) { if (!StringUtils.isEmpty(tmp_pattern)) {
json.put("pattern", tmp_pattern); json.put("pattern", tmp_pattern);
} }
@ -200,19 +210,19 @@ public class TurnipProphet extends Model {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
setData(money, qq); setData(money);
} }
} }
private String sendQQ(Map<String, String> map, String prices, String pattern, long qq) { private String sendQQ(Map<String, String> map, String prices, String pattern) {
String url = String.format("https://turnipprophet.io?prices=%s%s", String url = String.format("https://turnipprophet.io?prices=%s%s",
prices, prices,
pattern == null ? "" : "&pattern=" + pattern pattern == null ? "" : "&pattern=" + pattern
); );
if (map == null) { if (map == null) {
QQBotManager.getInstance().sendMessage(qq, "没有结果,请检查数据是否有误。 \n网页预览\n" + url); QQBotManager.getInstance().sendMessage(sendQQ, getMessage("没有结果,请检查数据是否有误。 \n网页预览\n" + url));
return null; return null;
} }
@ -223,8 +233,8 @@ public class TurnipProphet extends Model {
out.append(TurnipData.MODEL).append(prArray.getJSONObject(0).getString(TurnipData.MODEL)).append("\n"); out.append(TurnipData.MODEL).append(prArray.getJSONObject(0).getString(TurnipData.MODEL)).append("\n");
out.append(TurnipData.PR).append(prArray.getJSONObject(0).getString(TurnipData.PR)).append("\n"); out.append(TurnipData.PR).append(prArray.getJSONObject(0).getString(TurnipData.PR)).append("\n");
out.append("购入价:").append(prices.split("\\.")[0]).append("\n"); out.append("购入价:").append(prices.split("\\.")[0]).append("\n");
if(getDay()==0){ if (getDay() == 0) {
out.append("满背包(4行)购入价:").append(4000*Integer.parseInt(prices.split("\\.")[0])).append("\n"); out.append("满背包(4行)购入价:").append(4000 * Integer.parseInt(prices.split("\\.")[0])).append("\n");
} }
out.append(TurnipData.MIX).append(map.get(TurnipData.MIX)).append("\n") out.append(TurnipData.MIX).append(map.get(TurnipData.MIX)).append("\n")
.append(TurnipData.MAX).append(map.get(TurnipData.MAX)).append("\n") .append(TurnipData.MAX).append(map.get(TurnipData.MAX)).append("\n")
@ -255,7 +265,7 @@ public class TurnipProphet extends Model {
out.append("祝好运 :)"); out.append("祝好运 :)");
Log.i("TurnipProphet", out.toString()); Log.i("TurnipProphet", out.toString());
QQBotManager.getInstance().sendMessage(qq, out.toString()); QQBotManager.getInstance().sendMessage(sendQQ, getMessage(out.toString()));
return prArray.getJSONObject(0).getString(TurnipData.MODEL); return prArray.getJSONObject(0).getString(TurnipData.MODEL);
} }
@ -278,7 +288,6 @@ public class TurnipProphet extends Model {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
TurnipProphet prophet = new TurnipProphet(); TurnipProphet prophet = new TurnipProphet();
prophet.setData(92, 583819556);
} }

View File

@ -4,6 +4,8 @@ import com.yutou.qqbot.QQNumberManager;
import com.yutou.qqbot.interfaces.ModelInterface; import com.yutou.qqbot.interfaces.ModelInterface;
import net.mamoe.mirai.event.events.GroupMessageEvent; import net.mamoe.mirai.event.events.GroupMessageEvent;
import net.mamoe.mirai.event.events.MessageEvent; import net.mamoe.mirai.event.events.MessageEvent;
import net.mamoe.mirai.message.data.At;
import net.mamoe.mirai.message.data.MessageChainBuilder;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
@ -39,8 +41,8 @@ public abstract class Model implements ModelInterface {
public static final String TSDM_PAY = "!tsdm"; public static final String TSDM_PAY = "!tsdm";
public static final String TSDM_SIGN = "!tsdm签到"; public static final String TSDM_SIGN = "!tsdm签到";
public static final String BAIDU_DOWN = "!bd"; public static final String BAIDU_DOWN = "!bd";
public static final String ROUTER_ADD="!添加设备"; public static final String ROUTER_ADD = "!添加设备";
public static final String ROUTER_DEL="!删除设备"; public static final String ROUTER_DEL = "!删除设备";
} }
@ -56,11 +58,15 @@ public abstract class Model implements ModelInterface {
public String msg; public String msg;
protected boolean isGroupPower = false; protected boolean isGroupPower = false;
private boolean isGroup;
private Long user;
public void onMessage(Long qq, MessageEvent event, boolean isGroup) { public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
msg = event.getMessage().contentToString(); msg = event.getMessage().contentToString();
msg = msg.replace("", "!"); msg = msg.replace("", "!");
if(isGroup) { this.isGroup = isGroup;
if (isGroup) {
user=event.getSource().getFromId();
GroupMessageEvent groupEvent = (GroupMessageEvent) event; GroupMessageEvent groupEvent = (GroupMessageEvent) event;
group = groupEvent.getGroup().getId(); group = groupEvent.getGroup().getId();
if (QQNumberManager.getManager().isExistsPower(group, msg.split(" ")[0])) { if (QQNumberManager.getManager().isExistsPower(group, msg.split(" ")[0])) {
@ -85,4 +91,13 @@ public abstract class Model implements ModelInterface {
return builder; return builder;
} }
public MessageChainBuilder getMessage(String text) {
MessageChainBuilder chain = new MessageChainBuilder();
if (isGroup) {
chain.add(new At(user));
chain.add("\n");
}
chain.add(text);
return chain;
}
} }