QQBot/src/main/java/com/yutou/qqbot/QQBotManager.java
Yutousama f4733ab9bc 修复Linux下无法使用浏览器的问题
修复无权用户无法访问公开模块的问题
2021-12-09 02:50:53 +08:00

219 lines
7.6 KiB
Java

package com.yutou.qqbot;
import com.yutou.qqbot.Listeners.QQMessageListener;
import com.yutou.qqbot.models.Animal.TurnipProphet;
import com.yutou.qqbot.models.Commands.Bangumi;
import com.yutou.qqbot.models.Commands.System.*;
import com.yutou.qqbot.models.Model;
import com.yutou.qqbot.models.setu.QQSetu;
import com.yutou.qqbot.utlis.*;
import net.mamoe.mirai.Bot;
import net.mamoe.mirai.BotFactory;
import net.mamoe.mirai.event.GlobalEventChannel;
import net.mamoe.mirai.message.data.Image;
import net.mamoe.mirai.message.data.MessageChainBuilder;
import net.mamoe.mirai.utils.BotConfiguration;
import net.mamoe.mirai.utils.ExternalResource;
import java.io.File;
import java.util.List;
import java.util.Objects;
public class QQBotManager {
public static Long defGroup=891655174L;
static {
Model.classList.add(QQSetu.class);
Model.classList.add(Audio.class);
Model.classList.add(BtFlash.class);
Model.classList.add(Cmd.class);
Model.classList.add(Help.class);
Model.classList.add(IP.class);
Model.classList.add(OpenPC.class);
Model.classList.add(Restart.class);
Model.classList.add(ToolsIdea.class);
Model.classList.add(UpdateIP.class);
Model.classList.add(Version.class);
Model.classList.add(Bangumi.class);
Model.classList.add(TurnipProphet.class);
}
private static QQBotManager botManager = null;
private Bot bot;
private static final long qqGroup = 891655174L;
private boolean isLogin = false;
private static boolean isInit = false;
private QQBotManager() {
Object isRun = ConfigTools.load(ConfigTools.CONFIG, "qq_bot");
if (isRun != null && (boolean) isRun) {
isLogin = true;
isInit = true;
init();
}
}
private void init() {
new Thread(new Runnable() {
@Override
public void run() {
long qq = ConfigTools.load(ConfigTools.CONFIG,"qq_number",Long.class);
String password = ConfigTools.load(ConfigTools.CONFIG,"qq_password",String.class);
bot = BotFactory.INSTANCE.newBot(qq, password, new BotConfiguration() {
{
setProtocol(MiraiProtocol.ANDROID_PAD);
fileBasedDeviceInfo("qq_bot_devices_info.json");
if ("nas".equals(ConfigTools.load(ConfigTools.CONFIG, "model"))) {
noBotLog();
noNetworkLog();
}
}
});
//Events.registerEvents(bot, new MessageListener());
GlobalEventChannel.INSTANCE.registerListenerHost(new QQMessageListener());
// GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, new MessageListener());
bot.login();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String str = sendMessage("姬妻酱上线拉~☆Daze~ 当前版本:"+QQBotApplication.version);
Log.i(str);
}
}).start();
bot.join();
}
}).start();
}
public static QQBotManager getInstance() {
if (botManager == null && !isInit) {
botManager = new QQBotManager();
}
return botManager;
}
public boolean isLogin() {
return isLogin;
}
private Image getImage(File file,Long qq) {
if (bot != null) {
if(QQNumberManager.getManager().isGroup(qq)) {
return Objects.requireNonNull(bot.getGroup(qq)).uploadImage(ExternalResource.create(file));
}else{
return Objects.requireNonNull(bot.getFriend(qq)).uploadImage(ExternalResource.create(file));
}
}
return null;
}
private String getNotLoginQQ() {
return "没有登录QQ";
}
public String sendMessage(String text) {
if (bot != null&&!StringUtils.isEmpty(text)) {
try {
return Objects.requireNonNull(bot.getGroup(qqGroup)).sendMessage(text).toString();
} catch (Exception e) {
e.printStackTrace();
}
}
return getNotLoginQQ();
}
public String sendMessage(Long group, String text) {
if (bot != null) {
try {
if(QQNumberManager.getManager().isGroup(group)) {
return Objects.requireNonNull(bot.getGroup(group)).sendMessage(text).toString();
}else{
return Objects.requireNonNull(bot.getFriend(group)).sendMessage(text).toString();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return getNotLoginQQ();
}
public void sendMessage(Long group, MessageChainBuilder builder) {
if (bot != null) {
if(QQNumberManager.getManager().isGroup(group)) {
Objects.requireNonNull(bot.getGroup(group)).sendMessage(builder.asMessageChain());
}else{
Objects.requireNonNull(bot.getFriend(group)).sendMessage(builder.asMessageChain());
}
}
}
public String sendMessage(File imageFile,Long qq,String text){
try {
if (bot != null) {
Image image = getImage(imageFile,qq);
MessageChainBuilder builder = new MessageChainBuilder();
if (image != null) {
builder.append(image);
}
builder.append(text);
if(QQNumberManager.getManager().isGroup(qq)) {
return Objects.requireNonNull(bot.getGroup(qq)).sendMessage(builder.asMessageChain()).toString();
}else{
return Objects.requireNonNull(bot.getFriend(qq)).sendMessage(builder.asMessageChain()).toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return getNotLoginQQ();
}
public String sendMessage(File imageFile, String text) {
return sendMessage(imageFile,qqGroup,text);
}
public String sendMessage(List<File> imgs,Long qq, String text) {
if (bot != null) {
MessageChainBuilder builder = new MessageChainBuilder();
for (File img : imgs) {
builder.append(Objects.requireNonNull(getImage(img,qq)));
}
builder.append(text);
if(QQNumberManager.getManager().isGroup(qq)) {
return Objects.requireNonNull(bot.getGroup(qq)).sendMessage(builder.asMessageChain()).toString();
}else{
return Objects.requireNonNull(bot.getFriend(qq)).sendMessage(builder.asMessageChain()).toString();
}
}
return getNotLoginQQ();
}
public static void main(String[] args) {
getInstance();
}
public void sendVersion() {
String localVersion = QQBotApplication.version;
String serverVersion = HttpTools.get("http://tools.yutou233.cn:8000/public/version.do?token=zIrsh9TUZP2lfRW753PannG49E7VJvor");
String msg = "本地版本:" + localVersion + "\n" + "服务器版本:" + serverVersion;
QQBotManager.getInstance().sendMessage(msg);
AppTools.sendServer("服务版本查询", msg);
}
}