├── CommandBook.md ├── KFCFactory.json ├── LICENSE ├── README.md ├── WMagicBotR_sample.properties ├── embeddings.json ├── img ├── IntelliJ_IDEA_icon.png ├── jb_beam.png ├── v1.png ├── v2.png ├── v3.png ├── v4.png ├── v5.png └── v6.png ├── lib ├── fix-protocol-version-1.9.4.mirai2.jar └── qsign-1.2.1-beta-dev-d62ddce.mirai2.jar ├── mvnw ├── mvnw.cmd ├── nicknames.txt ├── pom.xml ├── src └── main │ ├── java │ └── com │ │ └── whitemagic2014 │ │ ├── Simulator.java │ │ ├── WMagicBotRApplication.java │ │ ├── annotate │ │ ├── AnnotateAnalyzer.java │ │ ├── Command.java │ │ ├── Function.java │ │ └── Switch.java │ │ ├── bot │ │ └── MagicBotR.java │ │ ├── command │ │ ├── Command.java │ │ ├── EverywhereCommand.java │ │ ├── FriendCommand.java │ │ ├── GroupCommand.java │ │ ├── TempMessageCommand.java │ │ └── impl │ │ │ ├── everywhere │ │ │ ├── BaseEveryWhereCommand.java │ │ │ ├── CanEatCommand.java │ │ │ ├── HelloCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── chatGpt │ │ │ │ ├── ChatClearCommand.java │ │ │ │ ├── ChatGptCommand.java │ │ │ │ ├── ChatGptImageCommand.java │ │ │ │ ├── ChatSettingCommand.java │ │ │ │ └── ChatWithEmbeddings.java │ │ │ ├── engage │ │ │ │ ├── BattleKeyCommand.java │ │ │ │ ├── CheckKey.java │ │ │ │ ├── FinishBattle.java │ │ │ │ ├── FinishKey.java │ │ │ │ ├── RegistKey.java │ │ │ │ └── StartBattle.java │ │ │ ├── pcr │ │ │ │ ├── CheckPcrdfansCode.java │ │ │ │ ├── PcrAskJJC.java │ │ │ │ └── PcrAskJJCImage.java │ │ │ └── remind │ │ │ │ ├── RemindCommand.java │ │ │ │ └── RemindCommandV2.java │ │ │ ├── friend │ │ │ ├── AdminFriendCommand.java │ │ │ ├── BaseFriendCommand.java │ │ │ ├── CommomFirendCommand.java │ │ │ └── admin │ │ │ │ ├── BroadcastCommand.java │ │ │ │ ├── CheckDBCommand.java │ │ │ │ ├── RefreshPcrNick.java │ │ │ │ ├── ReloadPcrNick.java │ │ │ │ ├── ReloadVector.java │ │ │ │ └── SwithCommand.java │ │ │ └── group │ │ │ ├── AdminCommand.java │ │ │ ├── BaseGroupCommand.java │ │ │ ├── NoAuthCommand.java │ │ │ ├── OwnerCommand.java │ │ │ ├── currency │ │ │ ├── CheckCoinAccountCommand.java │ │ │ └── OpenCoinAccountCommand.java │ │ │ ├── funny │ │ │ ├── CHPCommand.java │ │ │ ├── ChaosImageCommand.java │ │ │ ├── ChpModelOffCommand.java │ │ │ ├── ChpModelOnCommand.java │ │ │ ├── DJTCommand.java │ │ │ ├── DailyLuckCommand.java │ │ │ ├── DecodeCommand.java │ │ │ ├── EncodeCommand.java │ │ │ ├── LotteryCommand.java │ │ │ ├── PYQCommand.java │ │ │ ├── PenCommand.java │ │ │ ├── PlanCommand.java │ │ │ ├── RemindCancelCommand.java │ │ │ └── RollCommand.java │ │ │ └── pcr │ │ │ ├── PcrAdminCommand.java │ │ │ ├── PcrBaseCommand.java │ │ │ ├── PcrNoAuthCommand.java │ │ │ ├── PcrOwnerCommand.java │ │ │ └── operation │ │ │ ├── AddMember.java │ │ │ ├── AddMemberAll.java │ │ │ ├── AttackKnife.java │ │ │ ├── CancelKnife.java │ │ │ ├── CancelOrder.java │ │ │ ├── CheckBoss.java │ │ │ ├── CheckKnife.java │ │ │ ├── CheckOrder.java │ │ │ ├── CheckTree.java │ │ │ ├── CreateGuild.java │ │ │ ├── DelGuild.java │ │ │ ├── EndKnife.java │ │ │ ├── InitGuildData.java │ │ │ ├── LockBoss.java │ │ │ ├── OnTree.java │ │ │ ├── OrderBoss.java │ │ │ ├── RemoveLock.java │ │ │ ├── RequestAttack.java │ │ │ ├── SL.java │ │ │ ├── SLcheck.java │ │ │ └── UpdateBoss.java │ │ ├── config │ │ ├── Beans.java │ │ ├── EventsConfig.java │ │ ├── ReadOutDesignatedConfiguration.java │ │ ├── RestTemplateConfig.java │ │ ├── SqlLiteConfig.java │ │ └── properties │ │ │ └── SwitchProperties.java │ │ ├── controller │ │ ├── HelloController.java │ │ └── pcr │ │ │ └── GuildController.java │ │ ├── dao │ │ ├── BotDBDao.java │ │ ├── CanEatDao.java │ │ ├── CoinLogDao.java │ │ ├── EngageBattleDao.java │ │ ├── FunnyTextDao.java │ │ ├── PcrDao.java │ │ ├── RemindDao.java │ │ ├── UserCoinDao.java │ │ └── UserPlanDao.java │ │ ├── db │ │ ├── DBInitHelper.java │ │ └── DBVersion.java │ │ ├── dic │ │ ├── BattleType.java │ │ ├── CoinType.java │ │ ├── Dic.java │ │ ├── PcrNoticeType.java │ │ ├── ReturnCode.java │ │ └── UserRole.java │ │ ├── events │ │ ├── CommandEvents.java │ │ ├── GroupEvents.java │ │ ├── MessageEvents.java │ │ └── RecallEvent.java │ │ ├── exception │ │ └── GlobalException.java │ │ ├── gmpfunction │ │ ├── AiDrawFunction.java │ │ └── FunctionPool.java │ │ ├── pojo │ │ ├── BotDB.java │ │ ├── CanEat.java │ │ ├── CommandProperties.java │ │ ├── DBVersionTable.java │ │ ├── EngageBattle.java │ │ ├── FunnyText.java │ │ ├── Remind.java │ │ ├── UserPlan.java │ │ ├── Version.java │ │ ├── currency │ │ │ ├── CoinLog.java │ │ │ └── UserCoin.java │ │ ├── pcr │ │ │ ├── Battle.java │ │ │ ├── Boss.java │ │ │ ├── BossLock.java │ │ │ ├── Guild.java │ │ │ ├── Notice.java │ │ │ └── User.java │ │ └── pcrjjc │ │ │ ├── Answer.java │ │ │ └── TeamMember.java │ │ ├── service │ │ ├── ChatPGTService.java │ │ ├── FunnyTextService.java │ │ ├── PcrBotService.java │ │ ├── Pcrjjc.java │ │ ├── RemindService.java │ │ ├── UserCoinService.java │ │ └── impl │ │ │ ├── ChatLog.java │ │ │ ├── ChatPGTServiceImpl.java │ │ │ ├── FunnyTextServiceImpl.java │ │ │ ├── OriginChatVO.java │ │ │ ├── PcrBotServiceImpl.java │ │ │ ├── PcrjjcImpl.java │ │ │ ├── RemindServiceImpl.java │ │ │ └── UserCoinServiceImpl.java │ │ ├── util │ │ ├── ChaosImage.java │ │ ├── DateFormatUtil.java │ │ ├── MagicGacha.java │ │ ├── MagicHelper.java │ │ ├── MagicImage.java │ │ ├── MagicLock.java │ │ ├── MagicLogger.java │ │ ├── MagicMaps.java │ │ ├── MagicMd5.java │ │ ├── MagicMsgSender.java │ │ ├── MagicSwitch.java │ │ ├── Path.java │ │ ├── codec │ │ │ ├── CustomHex.java │ │ │ └── MagicEncode.java │ │ └── time │ │ │ ├── MagicOnceTask.java │ │ │ ├── MagicPeriodTask.java │ │ │ ├── MagicTask.java │ │ │ ├── MagicTaskObserver.java │ │ │ └── Task.java │ │ └── vo │ │ ├── PrivateModel.java │ │ ├── ResultModel.java │ │ └── pcr │ │ └── BattleVo.java │ └── resources │ ├── META-INF │ └── spring.factories │ ├── application.properties │ ├── banner.txt │ ├── logback-spring.xml │ ├── mapper │ ├── BotDBMapper.xml │ ├── CanEatMapper.xml │ ├── CoinLogMapper.xml │ ├── EngageBattleDao.xml │ ├── FunnyTextMapper.xml │ ├── PcrMapper.xml │ ├── RemindMapper.xml │ ├── UserCoinMapper.xml │ └── UserPlanMapper.xml │ ├── static │ ├── common.util.js │ ├── css │ │ └── hui │ │ │ ├── H-ui.admin.css │ │ │ └── H-ui.min.css │ └── jquery │ │ └── jquery-2.1.1.min.js │ └── templates │ ├── errorPage.html │ └── pcr │ ├── knife-list.html │ └── knifeboard.html └── txlib ├── 3.5.1 ├── config.json ├── dtconfig.json ├── libfekit.so └── libpoxy.so ├── 3.5.2 ├── config.json ├── dtconfig.json ├── libfekit.so └── libpoxy.so ├── 8.9.58 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.63 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.68 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.70 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.71 ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.73 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.76 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.78 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.80 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.83 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.85 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.88 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so ├── 8.9.90 ├── android_pad.json ├── android_phone.json ├── config.json ├── dtconfig.json └── libfekit.so └── README.md /KFCFactory.json: -------------------------------------------------------------------------------- 1 | { 2 | "8.9.63": { 3 | "base_url": "http://127.0.0.1:8080", 4 | "type": "fuqiuluo/unidbg-fetch-qsign", 5 | "key": "114514" 6 | }, 7 | "8.9.58": { 8 | "base_url": "http://127.0.0.1:8888", 9 | "type": "kiliokuara/magic-signer-guide", 10 | "serverIdentityKey": "vivo50", 11 | "authorizationKey": "kfc" 12 | } 13 | } -------------------------------------------------------------------------------- /WMagicBotR_sample.properties: -------------------------------------------------------------------------------- 1 | # 需要登录的qq号 2 | bot.account= 3 | # 上面那个qq号的密码 4 | bot.pwd= 5 | # 配置一个唯一admin,可以配合 权限指令远程做一些对于bot的敏感操作 6 | bot.admin= 7 | 8 | # 启动时检查刷新获取jjc nickname资源 9 | pcrdfans.open=true 10 | # pcrdfans 的key 需要自己去申请,使用jjc查询功能必须 11 | pcrdfans.key= 12 | 13 | # 访问web服务所用的 url (域名/ip) , 本bot web端口使用28282,访问时想改变可以用nginx指定一个自定端口至28282 14 | site.url=http://127.0.0.1:28282 15 | 16 | # 各组件默认是否开启 17 | # 工会战 18 | component.pcr.guild=false 19 | # jjc查询 20 | component.pcr.jjc=false 21 | # 图形版jjc查询 22 | component.pcr.jjc.image=false 23 | 24 | # ChatGPT 25 | component.ChatGPT=false 26 | ChatGPT.proxyServer= 27 | ChatGPT.key= 28 | ChatGPT.org= 29 | ChatGPT.model= 30 | ChatGPT.maxTokens=4096 31 | # 聊天是否启用stream模式,开启stream会降低效率,不过可以减少超时的问题 32 | ChatGPT.chat.stream=false 33 | -------------------------------------------------------------------------------- /embeddings.json: -------------------------------------------------------------------------------- 1 | {"context":"数据1","contextEmbedding":[-0.0022823473,-0.0143784555,...]} 2 | {"context":"数据2","contextEmbedding":[-0.0022823473,-0.0143784555,...]} 3 | {"context":"数据3","contextEmbedding":[-0.0022823473,-0.0143784555,...]} 4 | //... 5 | //一行是一个json,包含context 存储文本(建议文本长度控制在500字以内,如果字数很长,可以切分为多条数据,将关联性强的放在一条中),contextEmbedding 存储对应的向量 6 | // 使用openai 的 CreateEmbeddingsRequest 可以获得文本的embeddings 7 | // 可以使用这个项目 https://github.com/WhiteMagic2014/gpt-magic ,做了一个api的封装,觉得好用的话请star一下给我一些支持哦 -------------------------------------------------------------------------------- /img/IntelliJ_IDEA_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/IntelliJ_IDEA_icon.png -------------------------------------------------------------------------------- /img/jb_beam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/jb_beam.png -------------------------------------------------------------------------------- /img/v1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v1.png -------------------------------------------------------------------------------- /img/v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v2.png -------------------------------------------------------------------------------- /img/v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v3.png -------------------------------------------------------------------------------- /img/v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v4.png -------------------------------------------------------------------------------- /img/v5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v5.png -------------------------------------------------------------------------------- /img/v6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/img/v6.png -------------------------------------------------------------------------------- /lib/fix-protocol-version-1.9.4.mirai2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/lib/fix-protocol-version-1.9.4.mirai2.jar -------------------------------------------------------------------------------- /lib/qsign-1.2.1-beta-dev-d62ddce.mirai2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/lib/qsign-1.2.1-beta-dev-d62ddce.mirai2.jar -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/WMagicBotRApplication.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class WMagicBotRApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(WMagicBotRApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/annotate/Command.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.annotate; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @Description: Command 专用注解 自动注册进 CommandEvents 9 | * @author: magic chen 10 | * @date: 2020/11/5 10:44 11 | **/ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Inherited 15 | @Component 16 | public @interface Command { 17 | 18 | /** 19 | * @Name: autoLoad 20 | * @Description: 默认自动注入 21 | * @Param: 22 | * @Return: boolean 23 | * @Author: magic chen 24 | * @Date: 2020/11/5 10:46 25 | **/ 26 | boolean autoLoad() default true; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/annotate/Function.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.annotate; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @Description: gpt函数调用 专用注解 自动注册进 chat 9 | * @author: magic chen 10 | * @date: 2023/12/1 15:55 11 | **/ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Inherited 15 | @Component 16 | public @interface Function { 17 | 18 | /** 19 | * @Name: autoLoad 20 | * @Description: 默认自动注入 21 | * @Param: 22 | * @Return: boolean 23 | * @Author: magic chen 24 | * @Date: 2020/11/5 10:46 25 | **/ 26 | boolean autoLoad() default true; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/annotate/Switch.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.annotate; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * @Description: 开关注解 7 | * @author: magic chen 8 | * @date: 2020/9/23 18:08 9 | **/ 10 | @Target(ElementType.TYPE) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Inherited 13 | public @interface Switch { 14 | 15 | // 开关名 16 | String name(); 17 | 18 | // 组件默认是否开启 19 | boolean defaultOn() default false; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/bot/MagicBotR.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.bot; 2 | 3 | import com.whitemagic2014.util.MagicLogger; 4 | import net.mamoe.mirai.Bot; 5 | import net.mamoe.mirai.BotFactory; 6 | import net.mamoe.mirai.event.GlobalEventChannel; 7 | import net.mamoe.mirai.event.ListenerHost; 8 | import net.mamoe.mirai.utils.BotConfiguration; 9 | 10 | import java.io.File; 11 | import java.util.List; 12 | 13 | /** 14 | * @Description: 创建bot 15 | * @author: magic chen 16 | * @date: 2020/8/20 15:46 17 | **/ 18 | public class MagicBotR { 19 | 20 | private static Bot miraiBot; 21 | 22 | public static Bot getBot() { 23 | return miraiBot; 24 | } 25 | 26 | /** 27 | * @Name: startBot 28 | * @Description: 创建bot 29 | * @Param: account bot账号 30 | * @Param: pwd bot密码 31 | * @Param: deviceInfo 存储设备信息文件 32 | * @Param: events 注册监听事件 33 | * @Param: netlog net日志重定向到文件夹路径 34 | * @Author: magic chen 35 | * @Date: 2020/8/20 15:54 36 | **/ 37 | public static void startBot(Long account, String pwd, String deviceInfo, List events, String netlog) { 38 | BotConfiguration config = new BotConfiguration(); 39 | config.fileBasedDeviceInfo(deviceInfo); 40 | // 使用自定义的log 41 | config.setBotLoggerSupplier(bot -> new MagicLogger()); 42 | // 将net层输出写入文件 43 | config.redirectNetworkLogToDirectory(new File(netlog)); 44 | config.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_PAD); 45 | // config.setLoginSolver(LoginSolver.Default); 46 | miraiBot = BotFactory.INSTANCE.newBot(account, pwd, config); 47 | miraiBot.login(); 48 | // 注册事件 49 | for (ListenerHost event : events) { 50 | GlobalEventChannel.INSTANCE.registerListenerHost(event); 51 | } 52 | // 这里必须要启新线程去跑bot 不然会占用主线程 53 | new Thread(() -> miraiBot.join()).start(); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command; 2 | 3 | import com.whitemagic2014.pojo.CommandProperties; 4 | 5 | /** 6 | * @Description: 指令接口 当接收到 指令(properties) 执行动作 7 | * @author: magic chen 8 | * @date: 2020/8/20 21:40 9 | **/ 10 | public interface Command { 11 | 12 | /** 13 | * @Name: properties 14 | * @Description: 构造指令集合 15 | * @Param: 16 | * @Return: com.whitemagic2014.pojo.CommandProperties 17 | * @Author: magic chen 18 | * @Date: 2020/8/20 22:35 19 | **/ 20 | CommandProperties properties(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/EverywhereCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command; 2 | 3 | import net.mamoe.mirai.contact.Contact; 4 | import net.mamoe.mirai.contact.User; 5 | import net.mamoe.mirai.message.data.Message; 6 | import net.mamoe.mirai.message.data.MessageChain; 7 | 8 | import java.util.ArrayList; 9 | 10 | /** 11 | * @Description: 适用于 好友私聊 群聊 群临时消息 情况 12 | * @author: magic chen 13 | * @date: 2020/8/20 22:34 14 | **/ 15 | public interface EverywhereCommand extends Command { 16 | 17 | /** 18 | * @Name: execute 19 | * @Description: 满足指令时执行 20 | * @Param: sender 发送人 21 | * @Param: args 参数 22 | * @Param: MessageChain 第一个元素一定为 [MessageSource], 存储此消息的发送人, 发送时间, 收信人, 消息 id 等数据. 随后的元素为拥有顺序的真实消息内容. 23 | * @Param: subject 消息事件主体 24 | * @Return: 需要回复的内容, 返回null不做处理 25 | * @Author: magic chen 26 | * @Date: 2020/8/20 22:49 27 | **/ 28 | Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/FriendCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command; 2 | 3 | import net.mamoe.mirai.contact.Friend; 4 | import net.mamoe.mirai.message.data.Message; 5 | import net.mamoe.mirai.message.data.MessageChain; 6 | 7 | import java.util.ArrayList; 8 | 9 | /** 10 | * @Description: 适用于好友私聊情况 11 | * @author: magic chen 12 | * @date: 2020/8/20 22:52 13 | **/ 14 | public interface FriendCommand extends Command { 15 | 16 | /** 17 | * @Name: execute 18 | * @Description: 私聊满足指令时执行 19 | * @Param: sender 发送人 20 | * @Param: args 参数 21 | * @Param: messageChain 第一个元素一定为 [MessageSource], 存储此消息的发送人, 发送时间, 收信人, 消息 id 等数据. 随后的元素为拥有顺序的真实消息内容. 22 | * @Param: subject 消息事件主体 23 | * @Return: 需要回复的内容, 返回null不做处理 24 | * @Author: magic chen 25 | * @Date: 2020/8/20 22:59 26 | **/ 27 | Message execute(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) throws Exception; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/GroupCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command; 2 | 3 | import net.mamoe.mirai.contact.Group; 4 | import net.mamoe.mirai.contact.Member; 5 | import net.mamoe.mirai.message.data.Message; 6 | import net.mamoe.mirai.message.data.MessageChain; 7 | 8 | import java.util.ArrayList; 9 | 10 | /** 11 | * @Description: 适用于私聊情况 12 | * @author: magic chen 13 | * @date: 2020/8/20 23:02 14 | **/ 15 | public interface GroupCommand extends Command { 16 | 17 | /** 18 | * @Name: execute 19 | * @Description: 群聊满足指令时执行 20 | * @Param: sender 发送人 21 | * @Param: args 参数 22 | * @Param: messageChain 第一个元素一定为 [MessageSource], 存储此消息的发送人, 发送时间, 收信人, 消息 id 等数据. 随后的元素为拥有顺序的真实消息内容. 23 | * @Param: subject 消息事件主体 24 | * @Return: 需要回复的内容, 返回null不做处理 25 | * @Author: magic chen 26 | * @Date: 2020/8/20 23:03 27 | **/ 28 | Message execute(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/TempMessageCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command; 2 | 3 | import net.mamoe.mirai.contact.Member; 4 | import net.mamoe.mirai.contact.User; 5 | import net.mamoe.mirai.message.data.Message; 6 | import net.mamoe.mirai.message.data.MessageChain; 7 | 8 | import java.util.ArrayList; 9 | 10 | /** 11 | * @Description: 适用于 群临时会话情况 12 | * @author: magic chen 13 | * @date: 2020/8/20 23:06 14 | **/ 15 | public interface TempMessageCommand extends Command { 16 | 17 | /** 18 | * @Name: execute 19 | * @Description: 群临时会话 满足指令时执行 20 | * @Param: sender 发送人 21 | * @Param: args 参数 22 | * @Param: messageChain 第一个元素一定为 [MessageSource], 存储此消息的发送人, 发送时间, 收信人, 消息 id 等数据. 随后的元素为拥有顺序的真实消息内容. 23 | * @Param: subject 消息事件主体 24 | * @Return: 需要回复的内容, 返回null不做处理 25 | * @Author: magic chen 26 | * @Date: 2020/8/20 23:08 27 | **/ 28 | Message execute(Member sender, ArrayList args, MessageChain messageChain, User subject) throws Exception; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/BaseEveryWhereCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere; 2 | 3 | import com.whitemagic2014.command.EverywhereCommand; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Member; 6 | import net.mamoe.mirai.contact.User; 7 | import net.mamoe.mirai.message.data.At; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.PlainText; 10 | 11 | /** 12 | * @Description: base everywhere command 13 | * @tips: 暂时没有写权限判断模块, 后期如果需要加上权限判断 请参考 group 和 friend的base实现 14 | * @author: magic chen 15 | * @date: 2020/8/27 16:37 16 | **/ 17 | public abstract class BaseEveryWhereCommand implements EverywhereCommand { 18 | 19 | 20 | /** 21 | * @Name: simpleMsgStr 22 | * @Description: 直接返回msg,需要判断是不是在群环境下,如果是 需要@sender 23 | * @Param: sender 24 | * @Param: msg 25 | * @Return: net.mamoe.mirai.message.data.Message 26 | * @Author: magic chen 27 | * @Date: 2020/8/27 16:53 28 | **/ 29 | protected Message simpleMsg(User sender, Message msg) { 30 | if (sender instanceof Member) { 31 | return new At(sender.getId()).plus("\n").plus(msg); 32 | } else { 33 | return msg; 34 | } 35 | } 36 | 37 | 38 | /** 39 | * @Name: simpleMsg 40 | * @Description: 简单的包装 特殊业务的话额外处理 41 | * @Param: sender 42 | * @Param: result 43 | * @Return: net.mamoe.mirai.message.data.Message 44 | * @Author: magic chen 45 | * @Date: 2020/8/27 16:53 46 | **/ 47 | protected Message simpleMsg(User sender, PrivateModel result) { 48 | if (result.isSuccess()) { 49 | return simpleMsg(sender, new PlainText(result.getReturnObject())); 50 | } else { 51 | return simpleMsg(sender, new PlainText(result.getReturnMessage())); 52 | } 53 | } 54 | 55 | 56 | /** 57 | * @Name: simpleErrMsg 58 | * @Description: 简单错误包装 一般在确定业务失败后调用 59 | * @Param: sender 60 | * @Param: result 61 | * @Return: net.mamoe.mirai.message.data.Message 62 | * @Author: magic chen 63 | * @Date: 2020/8/27 16:52 64 | **/ 65 | protected Message simpleErrMsg(User sender, PrivateModel result) { 66 | return simpleMsg(sender, new PlainText(result.getReturnMessage())); 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/HelloCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import net.mamoe.mirai.contact.Contact; 6 | import net.mamoe.mirai.contact.User; 7 | import net.mamoe.mirai.message.data.Message; 8 | import net.mamoe.mirai.message.data.MessageChain; 9 | import net.mamoe.mirai.message.data.PlainText; 10 | 11 | import java.util.ArrayList; 12 | 13 | 14 | /** 15 | * @Description: 测试command 16 | * @author: magic chen 17 | * @date: 2020/8/20 23:12 18 | **/ 19 | @Command 20 | public class HelloCommand extends BaseEveryWhereCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("hello"); 25 | } 26 | 27 | @Override 28 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 29 | return simpleMsg(sender,new PlainText("hello!")) ; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/HelpCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import net.mamoe.mirai.contact.Contact; 6 | import net.mamoe.mirai.contact.User; 7 | import net.mamoe.mirai.message.data.Message; 8 | import net.mamoe.mirai.message.data.MessageChain; 9 | import net.mamoe.mirai.message.data.PlainText; 10 | 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * @Description: help 15 | * @author: magic chen 16 | * @date: 2020/9/4 17:06 17 | **/ 18 | @Command 19 | public class HelpCommand extends BaseEveryWhereCommand { 20 | 21 | @Override 22 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 23 | return new PlainText("https://github.com/WhiteMagic2014/WMagicBotR/blob/master/CommandBook.md\n" 24 | +"github打不开试试这个:\n" + 25 | "https://gitee.com/WhiteMagic2014/WMagicBotR/blob/master/CommandBook.md"); 26 | } 27 | 28 | @Override 29 | public CommandProperties properties() { 30 | return new CommandProperties("help", "帮助"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/chatGpt/ChatClearCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.chatGpt; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.annotate.Switch; 5 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 6 | import com.whitemagic2014.dic.Dic; 7 | import com.whitemagic2014.pojo.CommandProperties; 8 | import com.whitemagic2014.service.ChatPGTService; 9 | import net.mamoe.mirai.contact.Contact; 10 | import net.mamoe.mirai.contact.User; 11 | import net.mamoe.mirai.message.data.Message; 12 | import net.mamoe.mirai.message.data.MessageChain; 13 | import net.mamoe.mirai.message.data.PlainText; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | 16 | import java.util.ArrayList; 17 | 18 | 19 | @Command 20 | @Switch(name = Dic.Component_ChatGPT) 21 | public class ChatClearCommand extends BaseEveryWhereCommand { 22 | 23 | @Autowired 24 | ChatPGTService service; 25 | 26 | @Override 27 | public CommandProperties properties() { 28 | return new CommandProperties("xmlclear"); 29 | } 30 | 31 | @Override 32 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 33 | String session = subject.getId() + "-" + sender.getId(); 34 | return simpleMsg(sender, new PlainText(service.clearLog(session))); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/chatGpt/ChatGptCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.chatGpt; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.annotate.Switch; 5 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 6 | import com.whitemagic2014.dic.Dic; 7 | import com.whitemagic2014.gmpfunction.FunctionPool; 8 | import com.whitemagic2014.pojo.CommandProperties; 9 | import com.whitemagic2014.service.ChatPGTService; 10 | import net.mamoe.mirai.contact.Contact; 11 | import net.mamoe.mirai.contact.User; 12 | import net.mamoe.mirai.message.data.Message; 13 | import net.mamoe.mirai.message.data.MessageChain; 14 | import net.mamoe.mirai.message.data.PlainText; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | 17 | import java.util.ArrayList; 18 | 19 | @Command 20 | @Switch(name = Dic.Component_ChatGPT) 21 | public class ChatGptCommand extends BaseEveryWhereCommand { 22 | 23 | @Autowired 24 | ChatPGTService service; 25 | 26 | @Autowired 27 | FunctionPool functionPool; 28 | 29 | @Override 30 | public CommandProperties properties() { 31 | return new CommandProperties("gpt", "xml"); 32 | } 33 | 34 | @Override 35 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 36 | String session = subject.getId() + "-" + sender.getId(); 37 | String prompt = args.stream().map(s -> { 38 | return s.concat(" "); 39 | }).reduce("", String::concat); 40 | return simpleMsg(sender, new PlainText(service.chat(session, prompt, functionPool.functions()))); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/chatGpt/ChatGptImageCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.chatGpt; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.annotate.Switch; 5 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 6 | import com.whitemagic2014.dic.Dic; 7 | import com.whitemagic2014.pojo.CommandProperties; 8 | import com.whitemagic2014.service.ChatPGTService; 9 | import net.mamoe.mirai.contact.Contact; 10 | import net.mamoe.mirai.contact.User; 11 | import net.mamoe.mirai.message.data.Message; 12 | import net.mamoe.mirai.message.data.MessageChain; 13 | import net.mamoe.mirai.message.data.PlainText; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | 16 | import java.util.ArrayList; 17 | 18 | @Command 19 | @Switch(name = Dic.Component_ChatGPT) 20 | public class ChatGptImageCommand extends BaseEveryWhereCommand { 21 | 22 | @Autowired 23 | ChatPGTService service; 24 | 25 | @Override 26 | public CommandProperties properties() { 27 | return new CommandProperties("gpti", "xmli"); 28 | } 29 | 30 | @Override 31 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 32 | String prompt = args.stream().map(s -> { 33 | return s.concat(" "); 34 | }).reduce("", String::concat); 35 | return simpleMsg(sender, new PlainText(service.image(prompt).getUrl())); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/chatGpt/ChatSettingCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.chatGpt; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.annotate.Switch; 5 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 6 | import com.whitemagic2014.dic.Dic; 7 | import com.whitemagic2014.pojo.CommandProperties; 8 | import com.whitemagic2014.service.ChatPGTService; 9 | import net.mamoe.mirai.contact.Contact; 10 | import net.mamoe.mirai.contact.User; 11 | import net.mamoe.mirai.message.data.Message; 12 | import net.mamoe.mirai.message.data.MessageChain; 13 | import net.mamoe.mirai.message.data.PlainText; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | 16 | import java.util.ArrayList; 17 | 18 | @Command 19 | @Switch(name = Dic.Component_ChatGPT) 20 | public class ChatSettingCommand extends BaseEveryWhereCommand { 21 | 22 | @Autowired 23 | ChatPGTService service; 24 | 25 | @Override 26 | public CommandProperties properties() { 27 | return new CommandProperties("xmlset"); 28 | } 29 | 30 | @Override 31 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 32 | String session = subject.getId() + "-" + sender.getId(); 33 | String setting = args.stream().map(s -> { 34 | return s.concat(" "); 35 | }).reduce("", String::concat); 36 | return simpleMsg(sender, new PlainText(service.setPersonality(session, setting))); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/chatGpt/ChatWithEmbeddings.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.chatGpt; 2 | 3 | 4 | import com.whitemagic2014.annotate.Command; 5 | import com.whitemagic2014.annotate.Switch; 6 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 7 | import com.whitemagic2014.dic.Dic; 8 | import com.whitemagic2014.pojo.CommandProperties; 9 | import com.whitemagic2014.service.ChatPGTService; 10 | import net.mamoe.mirai.contact.Contact; 11 | import net.mamoe.mirai.contact.User; 12 | import net.mamoe.mirai.message.data.Message; 13 | import net.mamoe.mirai.message.data.MessageChain; 14 | import net.mamoe.mirai.message.data.PlainText; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | 17 | import java.util.ArrayList; 18 | 19 | @Command 20 | @Switch(name = Dic.Component_ChatGPT) 21 | public class ChatWithEmbeddings extends BaseEveryWhereCommand { 22 | 23 | @Autowired 24 | ChatPGTService service; 25 | 26 | @Override 27 | public CommandProperties properties() { 28 | return new CommandProperties("xmla"); 29 | } 30 | 31 | @Override 32 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 33 | String prompt = args.stream().map(s -> { 34 | return s.concat(" "); 35 | }).reduce("", String::concat); 36 | return simpleMsg(sender, new PlainText(service.answer(prompt))); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/BattleKeyCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 4 | import com.whitemagic2014.dao.EngageBattleDao; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | 7 | /** 8 | * @Description: 火纹续战分享码 9 | * @author: magic chen 10 | * @date: 2023/1/29 14:40 11 | **/ 12 | public abstract class BattleKeyCommand extends BaseEveryWhereCommand { 13 | 14 | @Autowired 15 | EngageBattleDao dao; 16 | 17 | protected String help() { 18 | return "续战查询功能:\n" 19 | + "查询可用续战: 续战查询/查询续战\n" 20 | + "共享一个续战: 续战登记/登记续战 abcd12 困难森林\n" 21 | + "关闭一个续战: 续战结束/结束续战 abcd12\n" 22 | + "认领一个续战开始战斗: 续战认领/认领 abcd12\n" 23 | + "打完认领的续战交接: 续战交接/交接 abcd12"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/CheckKey.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import com.whitemagic2014.pojo.EngageBattle; 6 | import net.mamoe.mirai.contact.Contact; 7 | import net.mamoe.mirai.contact.User; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | /** 16 | * @Description: 续战查询 17 | * @author: magic chen 18 | * @date: 2023/2/1 10:05 19 | **/ 20 | @Command 21 | public class CheckKey extends BattleKeyCommand { 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("续战查询", "查询续战"); 26 | } 27 | 28 | @Override 29 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 30 | try { 31 | List list = dao.listAllAbleBattle(); 32 | if (list.isEmpty()) { 33 | return new PlainText("当前没有可用续战可以挑战"); 34 | } 35 | 36 | String qq = String.valueOf(sender.getId()); 37 | 38 | 39 | String result = "为了更方便大家使用,打完的续战要及时关闭哦\n当前可用续战(●=发起,○=已参加):\n"; 40 | for (EngageBattle b : list) { 41 | String tag = ""; 42 | if (qq.equals(b.getQqNum())) { 43 | tag = "●"; 44 | } else if (qq.equals(b.getLinkNum1()) 45 | || qq.equals(b.getLinkNum2()) 46 | || qq.equals(b.getLinkNum3()) 47 | || qq.equals(b.getLinkNum4())) { 48 | tag = "○"; 49 | } 50 | result += b.getBattleKey().toUpperCase() + " " + tag + " 备注 :" + b.getRemark() + "\n"; 51 | } 52 | return new PlainText(result); 53 | } catch (Exception e) { 54 | return new PlainText(help()); 55 | } 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/FinishBattle.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import com.whitemagic2014.pojo.EngageBattle; 6 | import net.mamoe.mirai.contact.Contact; 7 | import net.mamoe.mirai.contact.User; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 续战交接 16 | * @author: magic chen 17 | * @date: 2023/2/1 10:29 18 | **/ 19 | @Command 20 | public class FinishBattle extends BattleKeyCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("续战交接", "交接"); 25 | } 26 | 27 | @Override 28 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 29 | try { 30 | String key = args.get(0).toLowerCase(); 31 | 32 | EngageBattle battle = new EngageBattle(); 33 | battle.setBattleKey(key); 34 | battle.setStatus(1); 35 | dao.updateByKey(battle); 36 | 37 | return new PlainText("交接成功"); 38 | } catch (Exception e) { 39 | return new PlainText(help()); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/FinishKey.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import com.whitemagic2014.pojo.EngageBattle; 6 | import net.mamoe.mirai.contact.Contact; 7 | import net.mamoe.mirai.contact.User; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 续战结束 16 | * @author: magic chen 17 | * @date: 2023/2/1 10:18 18 | **/ 19 | @Command 20 | public class FinishKey extends BattleKeyCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("续战结束", "结束续战"); 25 | } 26 | 27 | @Override 28 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 29 | try { 30 | String key = args.get(0).toLowerCase(); 31 | 32 | EngageBattle fin = new EngageBattle(); 33 | fin.setBattleKey(key); 34 | fin.setStatus(0); 35 | fin.setFinNum(String.valueOf(sender.getId())); 36 | dao.updateByKey(fin); 37 | 38 | return new PlainText("结束成功"); 39 | } catch (Exception e) { 40 | return new PlainText(help()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/RegistKey.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import com.whitemagic2014.pojo.EngageBattle; 6 | import net.mamoe.mirai.contact.Contact; 7 | import net.mamoe.mirai.contact.User; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 续战登记 16 | * @author: magic chen 17 | * @date: 2023/2/1 10:08 18 | **/ 19 | @Command 20 | public class RegistKey extends BattleKeyCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("续战登记", "登记续战"); 25 | } 26 | 27 | @Override 28 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 29 | try { 30 | String key = args.get(0).toLowerCase(); 31 | String remark = ""; 32 | if (args.size() > 1) { 33 | remark = args.get(1); 34 | } 35 | EngageBattle origin = dao.selectByKey(key); 36 | if (origin == null) { 37 | EngageBattle battle = new EngageBattle(); 38 | battle.setBattleKey(key); 39 | battle.setRemark(remark); 40 | battle.setStatus(1); 41 | battle.setQqNum(String.valueOf(sender.getId())); 42 | dao.insert(battle); 43 | } else { 44 | EngageBattle update = new EngageBattle(); 45 | update.setBattleKey(key); 46 | update.setRemark(remark); 47 | update.setStatus(1); 48 | update.setQqNum(String.valueOf(sender.getId())); 49 | update.setLinkNum1(""); 50 | update.setLinkNum2(""); 51 | update.setLinkNum3(""); 52 | update.setLinkNum4(""); 53 | update.setFinNum(""); 54 | dao.updateByKey(update); 55 | } 56 | return new PlainText("登记成功"); 57 | } catch (Exception e) { 58 | return new PlainText(help()); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/engage/StartBattle.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.engage; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.pojo.CommandProperties; 5 | import com.whitemagic2014.pojo.EngageBattle; 6 | import net.mamoe.mirai.contact.Contact; 7 | import net.mamoe.mirai.contact.User; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | import org.apache.commons.lang3.StringUtils; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 续战认领 17 | * @author: magic chen 18 | * @date: 2023/2/1 10:28 19 | **/ 20 | @Command 21 | public class StartBattle extends BattleKeyCommand { 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("续战认领", "认领"); 26 | } 27 | 28 | @Override 29 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 30 | try { 31 | String key = args.get(0).toLowerCase(); 32 | 33 | EngageBattle battle = dao.selectByKey(key); 34 | if (battle == null) { 35 | return new PlainText("认领成功"); 36 | } 37 | 38 | String qq = String.valueOf(sender.getId()); 39 | 40 | battle.setStatus(2); 41 | if (StringUtils.isBlank(battle.getLinkNum1())) { 42 | battle.setLinkNum1(qq); 43 | } else if (StringUtils.isBlank(battle.getLinkNum2())) { 44 | battle.setLinkNum2(qq); 45 | } else if (StringUtils.isBlank(battle.getLinkNum3())) { 46 | battle.setLinkNum3(qq); 47 | } else { 48 | battle.setLinkNum4(qq); 49 | } 50 | dao.updateByKey(battle); 51 | 52 | return new PlainText("认领成功"); 53 | } catch (Exception e) { 54 | return new PlainText(help()); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/everywhere/pcr/CheckPcrdfansCode.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.everywhere.pcr; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.everywhere.BaseEveryWhereCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.Pcrjjc; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Contact; 9 | import net.mamoe.mirai.contact.User; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import net.mamoe.mirai.message.data.PlainText; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | 15 | import java.util.ArrayList; 16 | 17 | /** 18 | * @Description: check pcrd错误码 19 | * @author: magic chen 20 | * @date: 2020/11/4 10:58 21 | **/ 22 | @Command 23 | public class CheckPcrdfansCode extends BaseEveryWhereCommand { 24 | 25 | @Autowired 26 | Pcrjjc pcrjjc; 27 | 28 | @Override 29 | public Message execute(User sender, ArrayList args, MessageChain messageChain, Contact subject) throws Exception { 30 | Integer code; 31 | try { 32 | code = Integer.valueOf(args.get(0).trim()); 33 | } catch (NumberFormatException nfe) { 34 | return simpleMsg(sender, new PlainText(args.get(0) + " : Unknown")); 35 | } 36 | PrivateModel check = pcrjjc.checkPcrdfansCode(code); 37 | return simpleMsg(sender, new PlainText(args.get(0) + " : " + check.getReturnMessage())); 38 | } 39 | 40 | @Override 41 | public CommandProperties properties() { 42 | return new CommandProperties("pcrdcode"); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/AdminFriendCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Friend; 6 | import org.springframework.beans.factory.annotation.Value; 7 | 8 | /** 9 | * @Description: 超管权限 私聊指令 10 | * @author: magic chen 11 | * @date: 2020/8/27 17:17 12 | **/ 13 | public abstract class AdminFriendCommand extends BaseFriendCommand { 14 | 15 | @Value("${bot.admin}") 16 | protected Long adminUid; 17 | 18 | @Override 19 | protected PrivateModel checkRole(Friend sender, Friend subject) { 20 | if (sender.getId() == adminUid) { 21 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 22 | } else { 23 | return new PrivateModel<>(ReturnCode.FAIL, "无权操作,该指令需要[超管]权限"); 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/CommomFirendCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Friend; 6 | 7 | /** 8 | * @Description: 普通私聊指令 9 | * @author: magic chen 10 | * @date: 2020/8/27 17:15 11 | **/ 12 | public abstract class CommomFirendCommand extends BaseFriendCommand { 13 | 14 | @Override 15 | protected PrivateModel checkRole(Friend sender, Friend subject) { 16 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/BroadcastCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.MagicMsgSender; 7 | import net.mamoe.mirai.contact.Friend; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 广播通知 16 | * @author: magic chen 17 | * @date: 2021/1/28 10:21 18 | **/ 19 | @Command 20 | public class BroadcastCommand extends AdminFriendCommand { 21 | 22 | @Override 23 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) { 24 | if (args.size() >= 1) { 25 | try { 26 | Message msg = new PlainText(args.stream().reduce("", String::concat)); 27 | MagicMsgSender.sendBroadcast(msg); 28 | return new PlainText("发送成功"); 29 | } catch (Exception e) { 30 | return new PlainText("发送失败:" + e.getMessage()); 31 | } 32 | } else { 33 | return new PlainText("广播 [内容]"); 34 | } 35 | } 36 | 37 | @Override 38 | public CommandProperties properties() { 39 | return new CommandProperties("广播"); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/CheckDBCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.dao.BotDBDao; 6 | import com.whitemagic2014.pojo.CommandProperties; 7 | import net.mamoe.mirai.contact.Friend; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 查询数据库表信息 17 | * @author: magic chen 18 | * @date: 2020/8/21 17:53 19 | **/ 20 | @Command 21 | public class CheckDBCommand extends AdminFriendCommand { 22 | 23 | @Autowired 24 | BotDBDao dbDao; 25 | 26 | @Override 27 | public CommandProperties properties() { 28 | return new CommandProperties("checkDB"); 29 | } 30 | 31 | @Override 32 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) { 33 | if (args.size() >= 1) { 34 | String tableName = args.get(0); 35 | if (dbDao.checkTableExist(tableName)) { 36 | return new PlainText("表 [" + tableName + "] 存在"); 37 | } else { 38 | return new PlainText("表 [" + tableName + "] 不存在"); 39 | } 40 | } else { 41 | return new PlainText("数据库信息: " + dbDao.DBVersion().toString() + "\n" + "已有表: " 42 | + dbDao.tables().stream().map(s -> "[" + s + "] ").reduce("", String::concat)); 43 | } 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/RefreshPcrNick.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.Pcrjjc; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Friend; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 刷新nick name 18 | * @author: magic chen 19 | * @date: 2020/8/27 17:10 20 | **/ 21 | @Command 22 | public class RefreshPcrNick extends AdminFriendCommand { 23 | 24 | @Autowired 25 | Pcrjjc pcrjjc; 26 | 27 | @Override 28 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) { 29 | PrivateModel result = pcrjjc.refreshNameFile(null); 30 | if (!result.isSuccess()) { 31 | return new PlainText(result.getReturnMessage()); 32 | } else { 33 | return new PlainText(result.getReturnObject()); 34 | } 35 | } 36 | 37 | @Override 38 | public CommandProperties properties() { 39 | return new CommandProperties("刷新nickname"); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/ReloadPcrNick.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.Pcrjjc; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Friend; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 重新加载 nickname 文件(不下载新的文件) 适合手动修改文件后刷新缓存 18 | * @author: magic chen 19 | * @date: 2021/1/27 15:49 20 | **/ 21 | @Command 22 | public class ReloadPcrNick extends AdminFriendCommand { 23 | 24 | @Autowired 25 | Pcrjjc pcrjjc; 26 | 27 | @Override 28 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) { 29 | PrivateModel result = pcrjjc.reloadNameFile(); 30 | return new PlainText(result.getReturnObject()); 31 | } 32 | 33 | 34 | @Override 35 | public CommandProperties properties() { 36 | return new CommandProperties("重载nickname"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/ReloadVector.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.ChatPGTService; 7 | import net.mamoe.mirai.contact.Friend; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * 重新加载问答预训练数据向量集合 17 | */ 18 | @Command 19 | public class ReloadVector extends AdminFriendCommand { 20 | 21 | @Autowired 22 | ChatPGTService service; 23 | 24 | @Override 25 | public CommandProperties properties() { 26 | return new CommandProperties("reloadvector"); 27 | } 28 | 29 | @Override 30 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) throws Exception { 31 | return new PlainText(service.reloadVector()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/friend/admin/SwithCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.friend.admin; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.friend.AdminFriendCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.MagicSwitch; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Friend; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 动态组件开关 17 | * @author: magic chen 18 | * @date: 2020/8/27 17:58 19 | **/ 20 | @Command 21 | public class SwithCommand extends AdminFriendCommand { 22 | 23 | 24 | @Override 25 | protected Message executeHandle(Friend sender, ArrayList args, MessageChain messageChain, Friend subject) { 26 | if (args.size() != 2) { 27 | return new PlainText("指令错误: 开关 [开启/关闭] [组件名]\n当前组件有:\n"+MagicSwitch.list()); 28 | } 29 | String opt = args.get(0); 30 | String componentName = args.get(1); 31 | 32 | PrivateModel openResult; 33 | if ("开启".equals(opt)) { 34 | openResult = MagicSwitch.open(componentName); 35 | } else if ("关闭".equals(opt)) { 36 | openResult = MagicSwitch.close(componentName); 37 | } else { 38 | return new PlainText("指令错误: 开关 [开启/关闭] [组件名]\n当前组件有:\n"+MagicSwitch.list()); 39 | } 40 | return simpleMsg(openResult); 41 | } 42 | 43 | @Override 44 | public CommandProperties properties() { 45 | return new CommandProperties("开关"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/AdminCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: 管理员及以上指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 13:33 12 | **/ 13 | public abstract class AdminCommand extends BaseGroupCommand{ 14 | 15 | @Override 16 | protected PrivateModel checkRole(Member sender, Group subject) { 17 | if (sender.getId() == adminUid //超管 18 | || isGroupAdmin(sender) //群管理 19 | || isGroupOwner(sender) //群主 20 | ) { 21 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 22 | } else { 23 | return new PrivateModel<>(ReturnCode.FAIL, "无权操作,该指令需要[群主][群管理员][超管]权限"); 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/NoAuthCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: 无需权限的指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 13:39 12 | **/ 13 | public abstract class NoAuthCommand extends BaseGroupCommand { 14 | 15 | @Override 16 | protected PrivateModel checkRole(Member sender, Group subject) { 17 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/OwnerCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: 群主超管指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 13:35 12 | **/ 13 | public abstract class OwnerCommand extends BaseGroupCommand { 14 | 15 | @Override 16 | protected PrivateModel checkRole(Member sender, Group subject) { 17 | if (sender.getId() == adminUid //超管 18 | || isGroupOwner(sender) //群主 19 | ) { 20 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 21 | } else { 22 | return new PrivateModel<>(ReturnCode.FAIL, "无权操作,该指令需要[群主][超管]权限"); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/currency/CheckCoinAccountCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.currency; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.pojo.currency.CoinLog; 7 | import com.whitemagic2014.pojo.currency.UserCoin; 8 | import com.whitemagic2014.service.UserCoinService; 9 | import com.whitemagic2014.vo.PrivateModel; 10 | import net.mamoe.mirai.contact.Group; 11 | import net.mamoe.mirai.contact.Member; 12 | import net.mamoe.mirai.message.data.At; 13 | import net.mamoe.mirai.message.data.Message; 14 | import net.mamoe.mirai.message.data.MessageChain; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | /** 21 | * @Description: 描述这个类的作用 22 | * @author: magic chen 23 | * @date: 2020/12/3 11:09 24 | **/ 25 | @Command 26 | public class CheckCoinAccountCommand extends NoAuthCommand { 27 | 28 | @Autowired 29 | UserCoinService ucs; 30 | 31 | @Override 32 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 33 | PrivateModel> result = ucs.checkLog(sender.getId(), null, null); 34 | if (!result.isSuccess()){ 35 | return simpleErrMsg(sender,result); 36 | } 37 | List logList = result.getReturnObject(); 38 | String msg = "\n" +logList.stream().map(CoinLog::getRemark).map(s->s.concat("\n")).reduce("",String::concat); 39 | return new At(sender.getId()).plus(msg); 40 | } 41 | 42 | @Override 43 | public CommandProperties properties() { 44 | return new CommandProperties("查账", "查询账户记录"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/currency/OpenCoinAccountCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.currency; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.UserCoinService; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 货币系统开户 18 | * @author: magic chen 19 | * @date: 2020/12/3 10:53 20 | **/ 21 | @Command 22 | public class OpenCoinAccountCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | UserCoinService ucs; 26 | 27 | @Override 28 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 29 | PrivateModel result = ucs.createAccount(sender.getId(), subject.getId()); 30 | return simpleMsg(sender, result); 31 | } 32 | 33 | @Override 34 | public CommandProperties properties() { 35 | return new CommandProperties("开户", "开通账户"); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/CHPCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.FunnyTextService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 夸夸机器人/ 在思考要不要喷喷机器人。。。 18 | * @author: magic chen 19 | * @date: 2022/7/18 10:51 20 | **/ 21 | @Command 22 | public class CHPCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | FunnyTextService funnyTextService; 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("chp", "夸", "继续夸", "夸我", "夸夸我", "说句好听的"); 30 | } 31 | 32 | @Override 33 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 34 | At at = new At(sender.getId()); 35 | return at.plus(funnyTextService.getChp()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/ChpModelOffCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.FunnyTextService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 关闭夸夸模式 18 | * @author: magic chen 19 | * @date: 2022/7/18 12:08 20 | **/ 21 | @Command 22 | public class ChpModelOffCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | FunnyTextService funnyTextService; 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("关闭夸夸模式", "关闭舔狗模式"); 30 | } 31 | 32 | @Override 33 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 34 | funnyTextService.unRegistChp(subject.getId(), sender.getId()); 35 | return new PlainText("已为您关闭夸夸模式"); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/ChpModelOnCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.FunnyTextService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 开启夸夸模式 18 | * @author: magic chen 19 | * @date: 2022/7/18 12:05 20 | **/ 21 | @Command 22 | public class ChpModelOnCommand extends NoAuthCommand { 23 | 24 | 25 | @Autowired 26 | FunnyTextService funnyTextService; 27 | 28 | @Override 29 | public CommandProperties properties() { 30 | return new CommandProperties("开启夸夸模式", "开启舔狗模式"); 31 | } 32 | 33 | @Override 34 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 35 | funnyTextService.registChp(subject.getId(), sender.getId()); 36 | return new PlainText("已为您开启夸夸模式"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/DJTCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.FunnyTextService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 毒鸡汤 18 | * @author: magic chen 19 | * @date: 2022/7/19 11:26 20 | **/ 21 | @Command 22 | public class DJTCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | FunnyTextService funnyTextService; 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("djt", "鸡汤", "毒鸡汤"); 30 | } 31 | 32 | @Override 33 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 34 | At at = new At(sender.getId()); 35 | return at.plus(funnyTextService.getDjt()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/DailyLuckCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.MagicGacha; 7 | import com.whitemagic2014.util.MagicMd5; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.At; 11 | import net.mamoe.mirai.message.data.Message; 12 | import net.mamoe.mirai.message.data.MessageChain; 13 | import net.mamoe.mirai.message.data.PlainText; 14 | 15 | import java.text.SimpleDateFormat; 16 | import java.util.ArrayList; 17 | import java.util.Date; 18 | import java.util.HashMap; 19 | import java.util.Map; 20 | 21 | /** 22 | * @Description: 每日抽签 23 | * @author: magic chen 24 | * @date: 2020/8/21 15:57 25 | **/ 26 | @Command 27 | public class DailyLuckCommand extends NoAuthCommand { 28 | 29 | MagicGacha dailyGacha; 30 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 31 | 32 | public DailyLuckCommand() { 33 | Map itemAndRate = new HashMap<>(); 34 | itemAndRate.put("大吉 恭喜你! 万事如意 百无禁忌 不去买个彩票吗?欧皇 ", 500); 35 | itemAndRate.put("中吉 恭喜拉! 抽卡应该能见彩咯~ ", 1500); 36 | itemAndRate.put("小吉 恭喜!刷困难本也许能出3碎片 走起!", 1500); 37 | itemAndRate.put("吉 小小的幸运 留意脚下 没准捡到硬币了呢~", 2500); 38 | itemAndRate.put("末吉 平平淡淡才是真 健康快乐每一天", 2000); 39 | itemAndRate.put("凶 风水轮流转 没准明天就欧了呢?", 1500); 40 | itemAndRate.put("大凶 啊这...给你换一个吧...\n恭喜你 抽到了特殊签! 姬吉!!!", 500); 41 | dailyGacha = new MagicGacha(itemAndRate); 42 | } 43 | 44 | 45 | @Override 46 | public CommandProperties properties() { 47 | return new CommandProperties("gacha", "抽签"); 48 | } 49 | 50 | @Override 51 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 52 | String seed = sender.getId() + sdf.format(new Date()); 53 | String item = dailyGacha.gacha(MagicMd5.getGachaRate(seed)); 54 | 55 | At at = new At(sender.getId()); 56 | PlainText plainText = new PlainText("\n抽到了 " + item); 57 | return at.plus(plainText); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/DecodeCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.codec.MagicEncode; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 朝代解密 17 | * @author: magic chen 18 | * @date: 2020/8/21 18:21 19 | **/ 20 | @Command 21 | public class DecodeCommand extends NoAuthCommand { 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("解密", "帮我解密"); 26 | } 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | At at = new At(sender.getId()); 31 | String result = "已经解密完啦,明文: \n" + MagicEncode.decode(args.get(0), null); 32 | return at.plus(result); 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/EncodeCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.codec.MagicEncode; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 朝代加密 17 | * @author: magic chen 18 | * @date: 2020/8/21 18:12 19 | **/ 20 | @Command 21 | public class EncodeCommand extends NoAuthCommand { 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("加密", "帮我加密"); 26 | } 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | At at = new At(sender.getId()); 31 | String result = "已经加密完啦,密文: \n" + MagicEncode.encode(args.get(0), null); 32 | return at.plus(result); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/LotteryCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | import net.mamoe.mirai.message.data.PlainText; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | import java.util.Random; 15 | import java.util.stream.Collectors; 16 | 17 | /** 18 | * @Description: 彩票 19 | * @author: magic chen 20 | * @date: 2022/10/25 15:24 21 | **/ 22 | @Command 23 | public class LotteryCommand extends NoAuthCommand { 24 | 25 | @Override 26 | public CommandProperties properties() { 27 | return new CommandProperties("彩票"); 28 | } 29 | 30 | 31 | @Override 32 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 33 | return new PlainText(red().stream().map(i -> i + " ").reduce("红:", String::concat) + "\n蓝:" + bule()); 34 | } 35 | 36 | 37 | private List red() { 38 | Random random = new Random(); 39 | List pool = new ArrayList<>(); 40 | List result = new ArrayList<>(); 41 | for (int i = 1; i <= 33; i++) { 42 | pool.add(i); 43 | } 44 | for (int i = 1; i <= 6; i++) { 45 | int flag = random.nextInt(pool.size()); 46 | int redtemp = pool.get(flag); 47 | result.add(redtemp); 48 | pool.remove(flag); 49 | } 50 | return result.stream().sorted(Integer::compareTo).collect(Collectors.toList()); 51 | } 52 | 53 | private Integer bule() { 54 | Random random = new Random(); 55 | return (random.nextInt(16) + 1); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/PYQCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.FunnyTextService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 朋友圈文案 18 | * @author: magic chen 19 | * @date: 2022/7/19 11:26 20 | **/ 21 | @Command 22 | public class PYQCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | FunnyTextService funnyTextService; 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("pyq", "朋友圈", "发动态"); 30 | } 31 | 32 | @Override 33 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 34 | At at = new At(sender.getId()); 35 | return at.plus(funnyTextService.getPyq()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/RemindCancelCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.service.RemindService; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 取消备忘 18 | * @author: magic chen 19 | * @date: 2022/9/8 17:30 20 | **/ 21 | @Command 22 | public class RemindCancelCommand extends NoAuthCommand { 23 | 24 | @Autowired 25 | RemindService service; 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("取消备忘"); 30 | } 31 | 32 | @Override 33 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) throws Exception { 34 | String taskKey = args.get(0); 35 | service.groupCancelRemind(taskKey); 36 | return new PlainText("已取消备忘提醒"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/funny/RollCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.funny; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.NoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.At; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | 13 | import java.util.ArrayList; 14 | import java.util.Random; 15 | 16 | /** 17 | * @Description: roll 点 18 | * @author: magic chen 19 | * @date: 2020/8/21 16:33 20 | **/ 21 | @Command 22 | public class RollCommand extends NoAuthCommand { 23 | 24 | @Override 25 | public CommandProperties properties() { 26 | return new CommandProperties("roll", "ROLL", "Roll"); 27 | } 28 | 29 | @Override 30 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 31 | Random random = new Random(); 32 | if (!args.isEmpty() && args.size() != 1) { 33 | return new PlainText("指令错误: [指令前缀][roll] [数字(可省略)]"); 34 | } else { 35 | At at = new At(sender.getId()); 36 | PlainText plainText; 37 | if (args.isEmpty()) { 38 | plainText = new PlainText(" roll出 " + (random.nextInt(100) + 1)); 39 | } else { 40 | int range; 41 | try { 42 | range = Integer.parseInt(args.get(0)); 43 | } catch (NumberFormatException e) { 44 | return new PlainText("指令错误: [指令前缀][roll] [数字(可省略)]"); 45 | } 46 | plainText = new PlainText(" roll出 " + (random.nextInt(range) + 1)); 47 | } 48 | return at.plus(plainText); 49 | } 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/PcrAdminCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: pcr 工会战 管理员及以上指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 12:54 12 | **/ 13 | public abstract class PcrAdminCommand extends PcrBaseCommand { 14 | 15 | @Override 16 | protected PrivateModel checkRole(Member sender, Group subject) { 17 | if (sender.getId() == adminUid //超管 18 | || isGroupAdmin(sender) //群管理 19 | || isGroupOwner(sender) //群主 20 | || isAdmin(subject.getId(), sender.getId()) //bot管理 21 | ) { 22 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 23 | } else { 24 | return new PrivateModel<>(ReturnCode.FAIL, "无权操作,该指令需要[群主][群管理员][超管][bot管理员]权限"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/PcrNoAuthCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: pcr 工会战 无权限指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 13:16 12 | **/ 13 | public abstract class PcrNoAuthCommand extends PcrBaseCommand { 14 | 15 | @Override 16 | protected PrivateModel checkRole(Member sender, Group subject) { 17 | //无需权限 18 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/PcrOwnerCommand.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr; 2 | 3 | import com.whitemagic2014.dic.ReturnCode; 4 | import com.whitemagic2014.vo.PrivateModel; 5 | import net.mamoe.mirai.contact.Group; 6 | import net.mamoe.mirai.contact.Member; 7 | 8 | /** 9 | * @Description: pcr 工会战 群主 超管 指令 10 | * @author: magic chen 11 | * @date: 2020/8/23 12:54 12 | **/ 13 | public abstract class PcrOwnerCommand extends PcrBaseCommand { 14 | 15 | 16 | @Override 17 | protected PrivateModel checkRole(Member sender, Group subject) { 18 | if (sender.getId() == adminUid //超管 19 | || isGroupOwner(sender) //群主 20 | || isOwner(subject.getId(), sender.getId()) //bot主人(也就是超管) 21 | ) { 22 | return new PrivateModel<>(ReturnCode.SUCCESS, "success"); 23 | } else { 24 | return new PrivateModel<>(ReturnCode.FAIL, "无权操作,该指令需要[群主][超管]权限"); 25 | } 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/AddMember.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 添加成员 17 | * @author: magic chen 18 | * @date: 2020/8/23 18:36 19 | **/ 20 | @Command 21 | public class AddMember extends PcrNoAuthCommand { 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("加入公会", "加入工会"); 26 | } 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | PrivateModel result; 31 | if (args.isEmpty()) { 32 | // 加入自己 33 | result = pcrBotService.addMemer(subject.getId(), sender.getId(), sender.getNameCard(), sender.getPermission()); 34 | } else { 35 | // 加入别人 只有管理员可以添加其他群员 36 | if (sender.getId() == adminUid || isGroupAdmin(sender) || isGroupOwner(sender) || isAdmin(subject.getId(), sender.getId())) { 37 | try { 38 | At at = (At) messageChain.stream().filter(At.class::isInstance).findFirst().orElse(null); 39 | Member ated = subject.get(at.getTarget()); 40 | result = pcrBotService.addMemer(subject.getId(), ated.getId(), ated.getNick(), ated.getPermission()); 41 | } catch (Exception e) { 42 | return new At(sender.getId()).plus("指令错误,请@出需要添加的成员"); 43 | } 44 | } else { 45 | return new At(sender.getId()).plus(" 无权操作,添加其他成员需要[群主][群管理员][超管]权限"); 46 | } 47 | } 48 | return simpleMsg(sender, result); 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/AddMemberAll.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrAdminCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 加入全部成员 16 | * @author: magic chen 17 | * @date: 2020/8/23 17:42 18 | **/ 19 | @Command 20 | public class AddMemberAll extends PcrAdminCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("加入全部成员"); 25 | } 26 | 27 | @Override 28 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 29 | PrivateModel result = pcrBotService.addAllMemer(subject); 30 | return simpleMsg(sender, result); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CancelKnife.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * @Description: 撤销 15 | * @author: magic chen 16 | * @date: 2020/8/23 23:16 17 | **/ 18 | @Command 19 | public class CancelKnife extends PcrNoAuthCommand { 20 | 21 | @Override 22 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 23 | return simpleMsg(sender, pcrBotService.cancelKnfie(subject.getId(), sender.getId())); 24 | } 25 | 26 | @Override 27 | public CommandProperties properties() { 28 | return new CommandProperties("撤销", "撤回"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CancelOrder.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 取消预约boss 17 | * @author: magic chen 18 | * @date: 2020/8/24 22:29 19 | **/ 20 | @Command 21 | public class CancelOrder extends PcrNoAuthCommand { 22 | 23 | String txt = "取消预约/取消预定/取消 [1-5]"; 24 | 25 | @Override 26 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 27 | 28 | try { 29 | int num = Integer.parseInt(args.get(0)); 30 | if (num < 1 || num > 5) { 31 | return new At(sender.getId()).plus("指令错误: " + txt); 32 | } 33 | PrivateModel result = pcrBotService.cancelOrder(subject.getId(), sender.getId(), num); 34 | return simpleMsg(sender, result); 35 | } catch (Exception e) { 36 | return new At(sender.getId()).plus("指令错误:" + txt); 37 | } 38 | 39 | } 40 | 41 | @Override 42 | public CommandProperties properties() { 43 | return new CommandProperties("取消预约", "取消", "取消预定"); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CheckBoss.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * @Description: 查询boss状态 15 | * @author: magic chen 16 | * @date: 2020/8/24 00:12 17 | **/ 18 | @Command 19 | public class CheckBoss extends PcrNoAuthCommand { 20 | 21 | @Override 22 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 23 | return simpleMsg(sender,pcrBotService.checkBossState(subject.getId())); 24 | } 25 | 26 | @Override 27 | public CommandProperties properties() { 28 | return new CommandProperties("状态"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CheckKnife.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.pojo.pcr.Guild; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import net.mamoe.mirai.message.data.PlainText; 13 | import org.springframework.beans.factory.annotation.Value; 14 | 15 | import java.util.ArrayList; 16 | 17 | /** 18 | * @Description: 查刀 格式化未完成,现在只返回json,后期有空优化 19 | * @author: magic chen 20 | * @date: 2020/8/24 23:30 21 | **/ 22 | @Command 23 | public class CheckKnife extends PcrNoAuthCommand { 24 | 25 | @Value("${site.url}") 26 | String siteUrl; 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | PrivateModel gexist = pcrBotService.checkGuildExist(subject.getId()); 31 | if (!gexist.isSuccess()) { 32 | return simpleErrMsg(sender, gexist); 33 | } 34 | if (!siteUrl.endsWith("/")){ 35 | siteUrl = siteUrl.concat("/"); 36 | } 37 | String url = siteUrl + "botr/pcr/guild/checkKnife?gid="+subject.getId(); 38 | return new PlainText("查刀移步:\n" + url); 39 | } 40 | 41 | @Override 42 | public CommandProperties properties() { 43 | return new CommandProperties("查刀"); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CheckOrder.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.pojo.pcr.Notice; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | import net.mamoe.mirai.message.data.MessageUtils; 13 | import net.mamoe.mirai.message.data.PlainText; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | import java.util.Map; 18 | import java.util.stream.Collectors; 19 | 20 | /** 21 | * @Description: 查询预约boss 22 | * @author: magic chen 23 | * @date: 2020/8/24 22:19 24 | **/ 25 | @Command 26 | public class CheckOrder extends PcrNoAuthCommand { 27 | 28 | @Override 29 | public CommandProperties properties() { 30 | return new CommandProperties("查预约", "查预定"); 31 | } 32 | 33 | @Override 34 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 35 | PrivateModel>> result = pcrBotService.checkOrder(subject.getId()); 36 | 37 | if (!result.isSuccess()) { 38 | return simpleErrMsg(sender, result); 39 | } 40 | 41 | Map> dataMap = result.getReturnObject(); 42 | MessageChain msg = MessageUtils.newChain(new PlainText("预约情况\n")); 43 | for (Integer num : dataMap.keySet()) { 44 | msg = msg.plus(num + "号boss:\n"); 45 | List uids = dataMap.get(num).stream().map(Notice::getUid).collect(Collectors.toList()); 46 | msg = msg.plus(makeAts(uids, subject)).plus("\n"); 47 | } 48 | return msg; 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CheckTree.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | import net.mamoe.mirai.message.data.PlainText; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * @Description: 查树 18 | * @author: magic chen 19 | * @date: 2020/8/24 20:41 20 | **/ 21 | @Command 22 | public class CheckTree extends PcrNoAuthCommand { 23 | @Override 24 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 25 | PrivateModel> result = pcrBotService.checkTree(subject.getId()); 26 | if (!result.isSuccess()) { 27 | return simpleErrMsg(sender,result); 28 | } 29 | List uids = result.getReturnObject(); 30 | MessageChain ats = makeAts(uids,subject); 31 | return new PlainText("现在树上的朋友有:\n").plus(ats); 32 | } 33 | 34 | @Override 35 | public CommandProperties properties() { 36 | return new CommandProperties("查树"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/CreateGuild.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrOwnerCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 创建公会 16 | * @author: magic chen 17 | * @date: 2020/8/22 11:13 18 | **/ 19 | @Command 20 | public class CreateGuild extends PcrOwnerCommand { 21 | 22 | 23 | @Override 24 | public CommandProperties properties() { 25 | return new CommandProperties("创建工会", "创建公会"); 26 | } 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | PrivateModel createResult = pcrBotService.createGuild(subject.getId(), subject.getName()); 31 | return simpleMsg(sender, createResult); 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/DelGuild.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrOwnerCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 删除公会 16 | * @author: magic chen 17 | * @date: 2020/8/23 17:49 18 | **/ 19 | @Command 20 | public class DelGuild extends PcrOwnerCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("人生有梦各自精彩"); 25 | } 26 | 27 | @Override 28 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 29 | PrivateModel result = pcrBotService.deleteGuild(subject.getId()); 30 | return simpleMsg(sender, result); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/InitGuildData.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrAdminCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 初始化公会战数据 16 | * @author: magic chen 17 | * @date: 2020/8/23 18:31 18 | **/ 19 | @Command 20 | public class InitGuildData extends PcrAdminCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("初始化工会战", "初始化公会战"); 25 | } 26 | 27 | @Override 28 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 29 | PrivateModel result = pcrBotService.clearGuildData(subject.getId()); 30 | return simpleMsg(sender, result); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/LockBoss.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 锁定boss 16 | * @author: magic chen 17 | * @date: 2020/8/24 23:08 18 | **/ 19 | @Command 20 | public class LockBoss extends PcrNoAuthCommand { 21 | 22 | @Override 23 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 24 | String msg; 25 | if (args.isEmpty()) { 26 | msg = "没有留言"; 27 | } else { 28 | msg = args.get(0); 29 | } 30 | PrivateModel result = pcrBotService.bossLock(subject.getId(), sender.getId(), sender.getNameCard(), msg); 31 | return simpleMsg(sender, result); 32 | } 33 | 34 | @Override 35 | public CommandProperties properties() { 36 | return new CommandProperties("锁定"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/OnTree.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.util.MagicMsgSender; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.At; 11 | import net.mamoe.mirai.message.data.Message; 12 | import net.mamoe.mirai.message.data.MessageChain; 13 | 14 | import java.util.ArrayList; 15 | 16 | /** 17 | * @Description: 挂树 18 | * @author: magic chen 19 | * @date: 2020/8/24 20:32 20 | **/ 21 | @Command 22 | public class OnTree extends PcrNoAuthCommand { 23 | 24 | 25 | @Override 26 | public CommandProperties properties() { 27 | return new CommandProperties("挂树"); 28 | } 29 | 30 | @Override 31 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 32 | PrivateModel result = pcrBotService.hangOnTree(subject.getId(),sender.getId()); 33 | if (result.isSuccess()){ 34 | MagicMsgSender.sendGroupMsgDelay(subject.getId(), new At(sender.getId()).plus("挂树30分钟提醒,请注意时间,避免掉刀(如已下树请忽略)"),1800L); 35 | } 36 | return simpleMsg(sender,result); 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/OrderBoss.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 预约boss 17 | * @author: magic chen 18 | * @date: 2020/8/24 21:52 19 | **/ 20 | @Command 21 | public class OrderBoss extends PcrNoAuthCommand { 22 | 23 | String txt = "预约/预定 [1-5]"; 24 | 25 | @Override 26 | public CommandProperties properties() { 27 | return new CommandProperties("预约", "预定"); 28 | } 29 | 30 | @Override 31 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 32 | 33 | try { 34 | Integer num = Integer.parseInt(args.get(0)); 35 | if (num < 1 || num > 5) { 36 | return new At(sender.getId()).plus("指令错误: " + txt); 37 | } 38 | PrivateModel result = pcrBotService.orderBoss(subject.getId(), sender.getId(), num); 39 | return simpleMsg(sender, result); 40 | } catch (Exception e) { 41 | return new At(sender.getId()).plus("指令错误: " + txt); 42 | } 43 | } 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/RemoveLock.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.Message; 9 | import net.mamoe.mirai.message.data.MessageChain; 10 | 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * @Description: 解除锁定 15 | * @author: magic chen 16 | * @date: 2020/8/24 23:19 17 | **/ 18 | @Command 19 | public class RemoveLock extends PcrNoAuthCommand { 20 | 21 | @Override 22 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 23 | 24 | return simpleMsg(sender,pcrBotService.removeLock(subject.getId())); 25 | } 26 | 27 | @Override 28 | public CommandProperties properties() { 29 | return new CommandProperties("解锁"); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/RequestAttack.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.pojo.pcr.BossLock; 7 | import com.whitemagic2014.vo.PrivateModel; 8 | import net.mamoe.mirai.contact.Group; 9 | import net.mamoe.mirai.contact.Member; 10 | import net.mamoe.mirai.message.data.Message; 11 | import net.mamoe.mirai.message.data.MessageChain; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * @Description: 申请出刀 17 | * @author: magic chen 18 | * @date: 2020/8/24 23:00 19 | **/ 20 | @Command 21 | public class RequestAttack extends PcrNoAuthCommand { 22 | @Override 23 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 24 | 25 | PrivateModel result = pcrBotService.bossLock(subject.getId(), sender.getId(), sender.getNameCard(), BossLock.request); 26 | 27 | return simpleMsg(sender, result); 28 | } 29 | 30 | @Override 31 | public CommandProperties properties() { 32 | return new CommandProperties("申请出刀"); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/SL.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: sl 16 | * @author: magic chen 17 | * @date: 2020/8/23 22:38 18 | **/ 19 | @Command 20 | public class SL extends PcrNoAuthCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("sl", "SL"); 25 | } 26 | 27 | 28 | @Override 29 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 30 | PrivateModel result = pcrBotService.sl(subject.getId(), sender.getId(), false); 31 | return simpleMsg(sender, result); 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/SLcheck.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrNoAuthCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import com.whitemagic2014.vo.PrivateModel; 7 | import net.mamoe.mirai.contact.Group; 8 | import net.mamoe.mirai.contact.Member; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 查询sl 16 | * @author: magic chen 17 | * @date: 2020/8/23 23:13 18 | **/ 19 | @Command 20 | public class SLcheck extends PcrNoAuthCommand { 21 | 22 | @Override 23 | public CommandProperties properties() { 24 | return new CommandProperties("sl?", "sl?"); 25 | } 26 | 27 | @Override 28 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 29 | PrivateModel result = pcrBotService.sl(subject.getId(), sender.getId(), true); 30 | return simpleMsg(sender, result); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/command/impl/group/pcr/operation/UpdateBoss.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.command.impl.group.pcr.operation; 2 | 3 | import com.whitemagic2014.annotate.Command; 4 | import com.whitemagic2014.command.impl.group.pcr.PcrAdminCommand; 5 | import com.whitemagic2014.pojo.CommandProperties; 6 | import net.mamoe.mirai.contact.Group; 7 | import net.mamoe.mirai.contact.Member; 8 | import net.mamoe.mirai.message.data.At; 9 | import net.mamoe.mirai.message.data.Message; 10 | import net.mamoe.mirai.message.data.MessageChain; 11 | 12 | import java.util.ArrayList; 13 | 14 | /** 15 | * @Description: 直接修改boss状态 16 | * @author: magic chen 17 | * @date: 2020/8/28 16:39 18 | **/ 19 | @Command 20 | public class UpdateBoss extends PcrAdminCommand { 21 | 22 | String txt = "修改状态 周目 几王 血量"; 23 | 24 | @Override 25 | protected Message executeHandle(Member sender, ArrayList args, MessageChain messageChain, Group subject) { 26 | if (args.isEmpty() || args.size() > 3) { 27 | return new At(sender.getId()).plus("指令错误," + txt); 28 | } 29 | try { 30 | Integer cycle = Integer.valueOf(args.get(0)); 31 | Integer num = Integer.valueOf(args.get(1)); 32 | Long hpnow = null; 33 | if (args.size() == 3) { 34 | hpnow = Long.valueOf(args.get(2)); 35 | } 36 | return simpleMsg(sender, pcrBotService.updateBossState(subject.getId(), sender.getId(), cycle, num, hpnow)); 37 | 38 | } catch (Exception e) { 39 | return new At(sender.getId()).plus("指令错误," + txt); 40 | } 41 | } 42 | 43 | @Override 44 | public CommandProperties properties() { 45 | return new CommandProperties("修改状态"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/config/Beans.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.config; 2 | 3 | import com.github.WhiteMagic2014.Gmp; 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * @Description: 无法直接使用 Service Controller Component ,但有需要被spring管理的 实例 10 | * @author: magic chen 11 | * @date: 2020/9/1 11:48 12 | **/ 13 | @Configuration 14 | public class Beans { 15 | 16 | 17 | @Value("${ChatGPT.proxyServer}") 18 | private String proxyServer; 19 | 20 | @Value("${ChatGPT.key}") 21 | private String key; 22 | 23 | @Value("${ChatGPT.org}") 24 | private String org; 25 | 26 | @Value("${ChatGPT.maxTokens}") 27 | private Integer maxTokens; 28 | 29 | @Value("${ChatGPT.model:gpt-4-1106-preview}") 30 | private String model; 31 | 32 | @Value("${ChatGPT.chat.stream}") 33 | private boolean streamModel; 34 | 35 | @Bean 36 | public Gmp initGmp() { 37 | System.setProperty("OPENAI_API_KEY", key); 38 | System.setProperty("OPENAI_API_SERVER", proxyServer); 39 | System.setProperty("OPENAI_API_ORG", org); 40 | Gmp gmp = new Gmp(); 41 | gmp.setStream(streamModel); 42 | gmp.setModel(model); 43 | gmp.setMaxTokens(maxTokens); 44 | return gmp; 45 | } 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/config/EventsConfig.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.config; 2 | 3 | import com.whitemagic2014.command.Command; 4 | import com.whitemagic2014.events.CommandEvents; 5 | import com.whitemagic2014.events.GroupEvents; 6 | import com.whitemagic2014.events.MessageEvents; 7 | import com.whitemagic2014.events.RecallEvent; 8 | import net.mamoe.mirai.event.ListenerHost; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.beans.factory.annotation.Qualifier; 11 | import org.springframework.context.annotation.Bean; 12 | import org.springframework.context.annotation.Configuration; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | /** 18 | * @Description: 需要注册的事件 19 | * 除了指令事件(现在由于指令事件需要 等待自定义注解扫描,自动注册指令,所以在启动bot前手动实例化) 20 | * @author: magic chen 21 | * @date: 2020/8/20 23:36 22 | **/ 23 | @Configuration 24 | public class EventsConfig { 25 | 26 | 27 | @Autowired 28 | RecallEvent recallEvent; 29 | 30 | @Autowired 31 | MessageEvents messageEvents; 32 | 33 | @Autowired 34 | GroupEvents groupEvents; 35 | 36 | @Bean(name = "botEvents") 37 | public List getBotevents() { 38 | List events = new ArrayList<>(); 39 | // events.add(recallEvent); 40 | events.add(messageEvents); 41 | // events.add(groupEvents); 42 | return events; 43 | } 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/config/ReadOutDesignatedConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.config; 2 | 3 | import com.whitemagic2014.util.Path; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.env.EnvironmentPostProcessor; 6 | import org.springframework.core.env.ConfigurableEnvironment; 7 | import org.springframework.core.env.MutablePropertySources; 8 | import org.springframework.core.env.PropertiesPropertySource; 9 | import org.springframework.core.io.FileSystemResource; 10 | import org.springframework.core.io.support.PropertiesLoaderUtils; 11 | 12 | import java.io.File; 13 | import java.io.IOException; 14 | import java.util.Properties; 15 | 16 | /** 17 | * @Description: 配置读取外部配置文件的配置文件(是不是很绕口。。) 18 | * @author: magic chen 19 | * @date: 2020/8/22 14:46 20 | **/ 21 | public class ReadOutDesignatedConfiguration implements EnvironmentPostProcessor { 22 | 23 | // 注意:只能读 .propertie .yml可能会有问题 24 | public static final String OUT_LOCATION = Path.getPath() + "WMagicBotR.properties"; 25 | 26 | 27 | @Override 28 | public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { 29 | File file = new File(OUT_LOCATION); 30 | if (file.exists()) { 31 | MutablePropertySources propertySources = environment.getPropertySources(); 32 | Properties properties = loadProperties(file); 33 | // 将读取的外部配置文件优先性加至 队首 (即读外部的) 34 | propertySources.addFirst(new PropertiesPropertySource("Config", properties)); 35 | // 将读取的外部配置文件优先性加至 末尾 (即读内部的) 36 | // propertySources.addLast(new PropertiesPropertySource("Config", properties)); 37 | System.out.println("读取外部配置"); 38 | } else { 39 | System.out.println("外部文件不存在 读取内部配置"); 40 | } 41 | } 42 | 43 | private Properties loadProperties(File f) { 44 | FileSystemResource resource = new FileSystemResource(f); 45 | try { 46 | return PropertiesLoaderUtils.loadProperties(resource); 47 | } catch (IOException ex) { 48 | throw new IllegalStateException("Failed to load local settings from " + f.getAbsolutePath(), ex); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/config/properties/SwitchProperties.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.config.properties; 2 | 3 | import com.whitemagic2014.config.ReadOutDesignatedConfiguration; 4 | import com.whitemagic2014.util.MagicSwitch; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | import java.io.BufferedReader; 9 | import java.io.File; 10 | import java.io.FileReader; 11 | 12 | /** 13 | * @Description: 加载用户组件配置文件 14 | * @author: magic chen 15 | * @date: 2020/9/24 16:57 16 | **/ 17 | public class SwitchProperties { 18 | 19 | private static final Logger logger = LoggerFactory.getLogger(SwitchProperties.class); 20 | 21 | public static void updateSwitchByProperty() { 22 | logger.info("开始读取 component switch 配置"); 23 | 24 | File in = new File(ReadOutDesignatedConfiguration.OUT_LOCATION); 25 | try (BufferedReader br = new BufferedReader(new FileReader(in))) { 26 | String line; 27 | while ((line = br.readLine()) != null) { 28 | if (line.startsWith("component.")) { 29 | String[] temp = line.split("="); 30 | MagicSwitch.init(temp[0], Boolean.valueOf(temp[1])); 31 | } 32 | } 33 | } catch (Exception e) { 34 | logger.error("读取 component switch 配置 失败", e); 35 | } 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/controller/HelloController.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.ResponseBody; 6 | 7 | /** 8 | * @Description: 测试集成web 9 | * @author: magic chen 10 | * @date: 2020/8/24 15:22 11 | **/ 12 | @Controller 13 | @RequestMapping("/hello") 14 | public class HelloController { 15 | 16 | @RequestMapping() 17 | @ResponseBody 18 | public String hello(){ 19 | return "hello"; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/controller/pcr/GuildController.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.controller.pcr; 2 | 3 | import com.whitemagic2014.vo.ResultModel; 4 | import com.whitemagic2014.service.PcrBotService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.web.bind.annotation.*; 8 | import org.springframework.web.servlet.ModelAndView; 9 | 10 | /** 11 | * @Description: pcr guild board 12 | * @author: magic chen 13 | * @date: 2020/10/26 11:46 14 | **/ 15 | @Controller 16 | @RequestMapping("/pcr/guild") 17 | public class GuildController { 18 | 19 | @Autowired 20 | PcrBotService pbs; 21 | 22 | /** 23 | * @Name: checkKnifePage 24 | * @Description: 面板查刀页面 25 | * @Param: gid 26 | * @Return: ModelAndView 27 | * @Author: magic chen 28 | * @Date: 2020/10/26 17:25 29 | **/ 30 | @GetMapping("/checkKnife") 31 | public ModelAndView checkKnifePage(@RequestParam("gid") Long gid) { 32 | ResultModel result = new ResultModel().wrapper(pbs.getKnifeDate(gid)); 33 | ModelAndView mv; 34 | if (result.isSuccess()){ 35 | mv = new ModelAndView("pcr/knifeboard"); 36 | mv.addAllObjects(result); 37 | mv.addObject("gid", gid); 38 | }else { 39 | mv = new ModelAndView("errorPage"); 40 | mv.addObject("status","404"); 41 | mv.addObject("message","该公会还没有出刀记录,稍后再来查询吧"); 42 | } 43 | return mv; 44 | } 45 | 46 | /** 47 | * @Name: checkKnife 48 | * @Description: 出刀数据接口 49 | * @Param: gid 50 | * @Param: dateStr 51 | * @Return: ModelAndView 返回 thymeleaf 模板 52 | * @Author: magic chen 53 | * @Date: 2020/10/27 14:23 54 | **/ 55 | @PostMapping("/api/checkKnife") 56 | public ModelAndView checkKnife(@RequestParam("gid") Long gid,@RequestParam("dateStr") String dateStr) { 57 | ModelAndView mv = new ModelAndView("pcr/knife-list"); 58 | mv.addAllObjects(new ResultModel().wrapper(pbs.checkKnife(gid, dateStr))); 59 | return mv; 60 | } 61 | 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/BotDBDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.BotDB; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: db相关 比如创建表 之类的 11 | * @author: magic chen 12 | * @date: 2020/8/20 17:32 13 | **/ 14 | @Repository 15 | public interface BotDBDao { 16 | 17 | /** 18 | * @Name: DBVersion 19 | * @Description: 获得DB版本信息 20 | * @Param: 21 | * @Return: com.whitemagic2014.pojo.BotDB 22 | * @Author: magic chen 23 | * @Date: 2020/8/20 17:33 24 | **/ 25 | BotDB DBVersion(); 26 | 27 | 28 | /** 29 | * @Name: updateDBVersion 30 | * @Description: 更新db版本 31 | * @Param: db 32 | * @Return: int 33 | * @Author: magic chen 34 | * @Date: 2020/8/20 17:33 35 | **/ 36 | int updateDBVersion(BotDB db); 37 | 38 | 39 | /** 40 | * @Name: checkTableExist 41 | * @Description: 检查表是否存在 42 | * @Param: tableName 43 | * @Return: java.lang.Boolean 44 | * @Author: magic chen 45 | * @Date: 2020/8/20 17:33 46 | **/ 47 | Boolean checkTableExist(@Param("tableName") String tableName); 48 | 49 | 50 | /** 51 | * @Name: tables 52 | * @Description: 获得所有表名 53 | * @Param: 54 | * @Return: java.util.List 55 | * @Author: magic chen 56 | * @Date: 2020/8/20 17:33 57 | **/ 58 | List tables(); 59 | 60 | /** 61 | * @Name: runDDLSql 62 | * @Description: 直接执行ddl sql 63 | * @Param: sql 64 | * @Return: int 65 | * @Author: magic chen 66 | * @Date: 2020/8/20 17:33 67 | **/ 68 | int runDDLSql(@Param("sql") String sql); 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/CanEatDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.CanEat; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 私人特供方法 11 | * @author: magic chen 12 | * @date: 2020/8/21 18:26 13 | **/ 14 | @Repository 15 | public interface CanEatDao { 16 | 17 | int insert(CanEat ce); 18 | 19 | List findByName(@Param("itemName") String itemName); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/CoinLogDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.currency.CoinLog; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 货币变更记录 dao 11 | * @author: magic chen 12 | * @date: 2020/12/2 17:30 13 | **/ 14 | @Repository 15 | public interface CoinLogDao { 16 | 17 | int insert(CoinLog log); 18 | 19 | List selectByCondition(@Param("uid") Long uid, @Param("gid") Long gid, @Param("type") String type); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/EngageBattleDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.EngageBattle; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: EngageBattleDao 11 | * @author: magic chen 12 | * @date: 2023/1/29 12:02 13 | **/ 14 | @Repository 15 | public interface EngageBattleDao { 16 | 17 | int insert(EngageBattle record); 18 | 19 | int updateByKey(EngageBattle record); 20 | 21 | EngageBattle selectByKey(@Param("key") String key); 22 | 23 | List listAllAbleBattle(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/FunnyTextDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.FunnyText; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 各种文本数据存储 11 | * @author: magic chen 12 | * @date: 2022/7/18 11:16 13 | **/ 14 | @Repository 15 | public interface FunnyTextDao { 16 | // 彩虹屁 17 | List loadAllChp(); 18 | 19 | int insertChp(FunnyText data); 20 | 21 | FunnyText getChpByHash(@Param("hash") String hash); 22 | 23 | 24 | //朋友圈文案 25 | List loadAllPyq(); 26 | 27 | int insertPyq(FunnyText data); 28 | 29 | FunnyText getPyqByHash(@Param("hash") String hash); 30 | 31 | // 毒鸡汤 32 | List loadAllDjt(); 33 | 34 | int insertDjt(FunnyText data); 35 | 36 | FunnyText getDjtByHash(@Param("hash") String hash); 37 | 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/RemindDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.Remind; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 备忘dao 11 | * @author: magic chen 12 | * @date: 2023/4/13 16:50 13 | **/ 14 | @Repository 15 | public interface RemindDao { 16 | 17 | 18 | /** 19 | * 读取 时间小于 loadReminds(@Param("nowL") Long nowL); 25 | 26 | 27 | /** 28 | * 取消备忘 29 | * 30 | * @param taskKey 31 | * @return 32 | */ 33 | int cancelRemind(@Param("taskKey") String taskKey); 34 | 35 | /** 36 | * 新增备忘 37 | * 38 | * @param remind 39 | * @return 40 | */ 41 | int addRemind(Remind remind); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/UserCoinDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.currency.UserCoin; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Description: 货币dao 9 | * @author: magic chen 10 | * @date: 2020/12/2 17:12 11 | **/ 12 | @Repository 13 | public interface UserCoinDao { 14 | 15 | 16 | /** 17 | * @Name: findByUid 18 | * @Description: 根据uid 查询账户 19 | * @Param: uid 20 | * @Return: UserCoin 21 | * @Author: magic chen 22 | * @Date: 2020/12/2 17:24 23 | **/ 24 | UserCoin findByUid(@Param("uid") Long uid); 25 | 26 | /** 27 | * @Name: insert 28 | * @Description: 新增账户 29 | * @Param: record 30 | * @Return: int 31 | * @Author: magic chen 32 | * @Date: 2020/12/2 17:28 33 | **/ 34 | int insert(UserCoin record); 35 | 36 | /** 37 | * @Name: updateByUid 38 | * @Description: 变更账户金额 39 | * @Param: update 40 | * @Return: int 41 | * @Author: magic chen 42 | * @Date: 2020/12/2 17:29 43 | **/ 44 | int updateByUid(UserCoin update); 45 | 46 | /** 47 | * @Name: delete 48 | * @Description: 注销账户 49 | * @Param: uid 50 | * @Return: int 51 | * @Author: magic chen 52 | * @Date: 2020/12/2 17:29 53 | **/ 54 | int delete(@Param("uid") Long uid); 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dao/UserPlanDao.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dao; 2 | 3 | import com.whitemagic2014.pojo.UserPlan; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 用户计划表 dao 11 | * @author: magic chen 12 | * @date: 2020/8/21 17:19 13 | **/ 14 | @Repository 15 | public interface UserPlanDao { 16 | 17 | List findPlans(@Param("uid") String uid, @Param("itemName") String itemName); 18 | 19 | int insertPlan(UserPlan plan); 20 | 21 | int updatePlan(UserPlan plan); 22 | 23 | int deletePlan(@Param("id") Integer id); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/db/DBVersion.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.db; 2 | 3 | import com.whitemagic2014.dao.BotDBDao; 4 | import com.whitemagic2014.pojo.BotDB; 5 | import com.whitemagic2014.pojo.DBVersionTable; 6 | import com.whitemagic2014.pojo.Version; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.beans.factory.annotation.Qualifier; 11 | import org.springframework.stereotype.Component; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @Description: 数据库更新 17 | * @author: magic chen 18 | * @date: 2020/8/20 17:34 19 | **/ 20 | @Component 21 | public class DBVersion { 22 | 23 | private static final Logger logger = LoggerFactory.getLogger(DBVersion.class); 24 | 25 | @Autowired 26 | BotDBDao dbDao; 27 | 28 | @Autowired 29 | @Qualifier("dbversionList") 30 | List dbVersionTable; 31 | 32 | public void checkUpdateDB() { 33 | logger.info("开始校验数据版本!"); 34 | if (dbVersionTable.isEmpty()) { 35 | System.out.println("获取最新版本失败!"); 36 | } else { 37 | BotDB db = dbDao.DBVersion(); 38 | Version ver = new Version(db.getVersion()); 39 | Version latestVer = dbVersionTable.get(dbVersionTable.size() - 1).getVer(); 40 | logger.info("db当前版本:" + ver + ",最新版本:" + latestVer); 41 | if (ver.compareTo(latestVer) < 0) { 42 | logger.info("开始更新!"); 43 | for (DBVersionTable dbver : dbVersionTable) { 44 | if (ver.compareTo(dbver.getVer()) < 0) { 45 | for (String sql : dbver.getSqls()) { 46 | dbDao.runDDLSql(sql); 47 | } 48 | } 49 | } 50 | db.setVersion(latestVer.toString()); 51 | dbDao.updateDBVersion(db); 52 | logger.info("更新完毕!"); 53 | } 54 | } 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/BattleType.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: 出刀类型 5 | * @author: magic chen 6 | * @date: 2020/8/22 14:13 7 | **/ 8 | public enum BattleType { 9 | 10 | end("尾刀"), extra("补偿刀"), nomal("正常刀"); 11 | 12 | String desc; 13 | 14 | BattleType(String desc) { 15 | this.desc = desc; 16 | } 17 | 18 | 19 | public boolean isEnd() { 20 | return this.equals(end); 21 | } 22 | 23 | public boolean isNotEnd() { 24 | return !this.equals(end); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/CoinType.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: 货币类型 5 | * @author: magic chen 6 | * @date: 2020/12/2 16:56 7 | **/ 8 | public enum CoinType { 9 | 10 | // 注意货币类型 取名必须要和 UserCoin 中的一样 否则反射取值可能会有问题 11 | magicCoin("魔力币"); 12 | 13 | String desc; 14 | 15 | CoinType(String desc) { 16 | this.desc = desc; 17 | } 18 | 19 | public String getDesc() { 20 | return desc; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/Dic.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: 全局固定字段 5 | * @author: magic chen 6 | * @date: 2020/8/22 23:52 7 | **/ 8 | public interface Dic { 9 | 10 | Long[] BossHp = new Long[]{6000000L, 8000000L, 10000000L, 12000000L, 20000000L}; 11 | 12 | // 在更新jjc文件的时候锁定 key 13 | String JJC_NICK_LOCK = "JJC_NICK_LOCK"; 14 | 15 | // jjc 查询的缓存 16 | String JJC_CACHE = "JJC_CACHE"; 17 | 18 | //pcr 工会战组件 19 | String Component_Pcr_Guild = "component.pcr.guild"; 20 | 21 | // pcr jjc组件 22 | String Component_Pcr_JJC = "component.pcr.jjc"; 23 | 24 | // pcr jjc图形组件 25 | String Component_Pcr_JJC_Image = "component.pcr.jjc.image"; 26 | 27 | // ChatGPT 28 | String Component_ChatGPT = "component.ChatGPT"; 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/PcrNoticeType.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: pcr 通知类型 5 | * @author: magic chen 6 | * @date: 2020/8/22 17:44 7 | **/ 8 | public enum PcrNoticeType { 9 | 10 | tree("挂树"), order("预约"); 11 | 12 | String desc; 13 | 14 | PcrNoticeType(String desc) { 15 | this.desc = desc; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/ReturnCode.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: 状态码 5 | * @author: magic chen 6 | * @date: 2020/8/22 13:56 7 | **/ 8 | public interface ReturnCode { 9 | 10 | String SUCCESS = "SUCCESS"; 11 | 12 | String FAIL = "FAIL"; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/dic/UserRole.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.dic; 2 | 3 | /** 4 | * @Description: 用户权限 和 群里的权限不一样 组合业务判断 5 | * @author: magic chen 6 | * @date: 2020/8/22 14:17 7 | **/ 8 | public enum UserRole { 9 | OWNER("最高权限 机器人主人 唯一"), // 在配置文件中配置的唯一管理员 10 | ADMIN("管理员"), //(群主和群管理在这里都作为管理员) 11 | MEMBER("一般成员"); 12 | 13 | String desc; 14 | 15 | UserRole(String desc) { 16 | this.desc = desc; 17 | } 18 | 19 | public boolean isAdmin() { 20 | return this == OWNER || this == ADMIN; 21 | } 22 | 23 | public boolean isOwner() { 24 | return this == OWNER; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/events/GroupEvents.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.events; 2 | 3 | import net.mamoe.mirai.event.*; 4 | import net.mamoe.mirai.event.events.MemberJoinEvent; 5 | import org.jetbrains.annotations.NotNull; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * @Description: 群事件 10 | * @author: magic chen 11 | * @date: 2020/9/9 17:49 12 | **/ 13 | @Component 14 | public class GroupEvents extends SimpleListenerHost { 15 | 16 | 17 | /** 18 | * @Name: onMemberJoinEvent 19 | * @Description: 加群事件 20 | * @Param: event 21 | * @Return: net.mamoe.mirai.event.ListeningStatus 22 | * @Author: magic chen 23 | * @Date: 2020/9/9 18:20 24 | **/ 25 | @NotNull 26 | @EventHandler(priority = EventPriority.NORMAL) 27 | public ListeningStatus onMemberJoinEvent(@NotNull MemberJoinEvent event) { 28 | String name = event.getMember().getNameCard(); 29 | event.getGroup().sendMessage("欢迎: " + name); 30 | return ListeningStatus.LISTENING; // 表示继续监听事件 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/events/MessageEvents.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.events; 2 | 3 | import com.whitemagic2014.service.FunnyTextService; 4 | import net.mamoe.mirai.event.EventHandler; 5 | import net.mamoe.mirai.event.EventPriority; 6 | import net.mamoe.mirai.event.ListeningStatus; 7 | import net.mamoe.mirai.event.SimpleListenerHost; 8 | import net.mamoe.mirai.event.events.GroupMessageEvent; 9 | import net.mamoe.mirai.message.data.At; 10 | import net.mamoe.mirai.message.data.Message; 11 | import org.jetbrains.annotations.NotNull; 12 | import org.slf4j.Logger; 13 | import org.slf4j.LoggerFactory; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | import org.springframework.stereotype.Component; 16 | 17 | import java.util.Random; 18 | 19 | /** 20 | * @Description: 非指令消息的消息事件 21 | * @author: magic chen 22 | * @date: 2020/9/8 11:40 23 | **/ 24 | @Component 25 | public class MessageEvents extends SimpleListenerHost { 26 | 27 | private static final Logger logger = LoggerFactory.getLogger(MessageEvents.class); 28 | 29 | 30 | private Random random = new Random(); 31 | 32 | @Autowired 33 | FunnyTextService funnyTextService; 34 | 35 | @NotNull 36 | @EventHandler(priority = EventPriority.NORMAL) 37 | public ListeningStatus chpModel(@NotNull GroupMessageEvent event) throws Exception { 38 | long gid = event.getGroup().getId(); 39 | long uid = event.getSender().getId(); 40 | if (funnyTextService.checkRequireChp(gid, uid)) { 41 | int seed = random.nextInt(100); 42 | if (seed > 50) { 43 | Message msg = new At(uid).plus(funnyTextService.getChp()); 44 | event.getSubject().sendMessage(msg); 45 | } 46 | } 47 | return ListeningStatus.LISTENING; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/events/RecallEvent.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.events; 2 | 3 | import kotlin.coroutines.CoroutineContext; 4 | import net.mamoe.mirai.event.EventHandler; 5 | import net.mamoe.mirai.event.ListeningStatus; 6 | import net.mamoe.mirai.event.SimpleListenerHost; 7 | import net.mamoe.mirai.event.events.MessageRecallEvent; 8 | import org.jetbrains.annotations.NotNull; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | import org.springframework.stereotype.Component; 12 | 13 | 14 | /** 15 | * @Description: 撤回事件 16 | * @author: magic chen 17 | * @date: 2020/8/20 23:28 18 | **/ 19 | @Component 20 | public class RecallEvent extends SimpleListenerHost { 21 | 22 | private static final Logger logger = LoggerFactory.getLogger(RecallEvent.class); 23 | 24 | @Override 25 | public void handleException(@NotNull CoroutineContext context, @NotNull Throwable exception) { 26 | // 貌似无法捕获异常 27 | logger.error("RecallEvent Error:", exception); 28 | } 29 | 30 | 31 | /** 32 | * @Name: onGroupRecall 33 | * @Description: 监听群聊撤回 34 | * @Param: event 35 | * @Return: net.mamoe.mirai.event.ListeningStatus 36 | * @Author: magic chen 37 | * @Date: 2020/8/20 23:55 38 | **/ 39 | @EventHandler 40 | public ListeningStatus onGroupRecall(@NotNull MessageRecallEvent.GroupRecall event) { 41 | String result = event.getOperator().getNameCard(); 42 | System.out.println(result + " 撤回了" + event.getMessageIds()); 43 | event.getGroup().sendMessage(result + " 撤回了" + event.getMessageIds()); 44 | return ListeningStatus.LISTENING; // 表示继续监听事件 45 | } 46 | 47 | 48 | /** 49 | * @Name: onFriendRecall 50 | * @Description: 监听私聊撤回 暂时不可用 51 | * @Param: event 52 | * @Return: net.mamoe.mirai.event.ListeningStatus 53 | * @Author: magic chen 54 | * @Date: 2020/8/20 23:56 55 | **/ 56 | @EventHandler 57 | public ListeningStatus onFriendRecall(@NotNull MessageRecallEvent.FriendRecall event) { 58 | String result = event.getOperator() + ""; 59 | System.out.println(result + " 撤回了" + event.getMessageIds()); 60 | event.getBot().getFriendOrFail(event.getOperator().getId()).sendMessage("你撤回了 " + event.getMessageIds()); 61 | return ListeningStatus.LISTENING; // 表示继续监听事件 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/exception/GlobalException.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.exception; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.web.bind.annotation.ControllerAdvice; 6 | import org.springframework.web.bind.annotation.ExceptionHandler; 7 | 8 | 9 | /** 10 | * @Description: 全局异常处理 11 | * @author: magic chen 12 | * @date: 2020/8/31 14:52 13 | **/ 14 | @ControllerAdvice 15 | public class GlobalException { 16 | 17 | private static final Logger logger = LoggerFactory.getLogger(GlobalException.class); 18 | 19 | @ExceptionHandler(Exception.class) 20 | public void defaultErrorHandler(Exception e) { 21 | try { 22 | logger.error("全局异常处理:", e); 23 | } catch (Exception ex) { 24 | logger.error("全局异常处理异常:", ex); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/gmpfunction/FunctionPool.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.gmpfunction; 2 | 3 | import com.github.WhiteMagic2014.function.GmpFunction; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: Function 池 11 | * @author: magic chen 12 | * @date: 2023/12/1 15:56 13 | **/ 14 | @Component 15 | public class FunctionPool { 16 | 17 | private List pool = new ArrayList<>(); 18 | 19 | public void addFunction(GmpFunction function) { 20 | pool.add(function); 21 | } 22 | 23 | public List functions() { 24 | return pool; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/BotDB.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | import com.whitemagic2014.util.DateFormatUtil; 4 | 5 | import java.util.Date; 6 | 7 | /** 8 | * @Description: db数据结构版本 9 | * @author: magic chen 10 | * @date: 2020/8/20 15:22 11 | **/ 12 | public class BotDB { 13 | Integer id; 14 | 15 | String name; 16 | 17 | String version; 18 | 19 | String createDate; 20 | 21 | String updateDate; 22 | 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | public void setName(String name) { 28 | this.updateDate = DateFormatUtil.sdf.format(new Date()); 29 | this.name = name; 30 | } 31 | 32 | public String getVersion() { 33 | return version; 34 | } 35 | 36 | public void setVersion(String version) { 37 | this.updateDate = DateFormatUtil.sdf.format(new Date()); 38 | this.version = version; 39 | } 40 | 41 | public String getCreateDate() { 42 | return createDate; 43 | } 44 | 45 | public void setCreateDate(String createDate) { 46 | this.createDate = createDate; 47 | } 48 | 49 | public BotDB upMainVer() { 50 | Version ver = new Version(version); 51 | this.version = ver.upMain().toString(); 52 | this.updateDate = DateFormatUtil.sdf.format(new Date()); 53 | return this; 54 | } 55 | 56 | public BotDB upChildVer() { 57 | Version ver = new Version(version); 58 | this.version = ver.upChild().toString(); 59 | this.updateDate = DateFormatUtil.sdf.format(new Date()); 60 | return this; 61 | } 62 | 63 | @Override 64 | public String toString() { 65 | return "BotDB [id=" + id + ", name=" + name + ", version=" + version + ", createDate=" + createDate 66 | + ", updateDate=" + updateDate + "]"; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/CanEat.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | /** 4 | * @Description: 私人特供 5 | * @author: magic chen 6 | * @date: 2020/8/21 18:25 7 | **/ 8 | public class CanEat { 9 | Integer id; 10 | String itemName; 11 | Boolean can; 12 | 13 | public Integer getId() { 14 | return id; 15 | } 16 | 17 | public void setId(Integer id) { 18 | this.id = id; 19 | } 20 | 21 | public String getItemName() { 22 | return itemName; 23 | } 24 | 25 | public void setItemName(String itemName) { 26 | this.itemName = itemName; 27 | } 28 | 29 | public Boolean getCan() { 30 | return can; 31 | } 32 | 33 | public void setCan(Boolean can) { 34 | this.can = can; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/CommandProperties.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | 6 | /** 7 | * @Description: 指令名称 8 | * @author: magic chen 9 | * @date: 2020/8/20 22:30 10 | **/ 11 | public class CommandProperties { 12 | 13 | 14 | public String name; 15 | 16 | public ArrayList alias; 17 | 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public ArrayList getAlias() { 24 | return alias; 25 | } 26 | 27 | 28 | public void setName(String name) { 29 | this.name = name; 30 | } 31 | 32 | public void setAlias(ArrayList alias) { 33 | this.alias = alias; 34 | } 35 | 36 | 37 | /** 38 | * 指令属性构造器 39 | * 40 | * @param name 指令名 41 | * @param alias 其他指令名 42 | */ 43 | public CommandProperties(String name, ArrayList alias) { 44 | this.name = name; 45 | this.alias = alias; 46 | } 47 | 48 | /** 49 | * 指令属性构造器封装 50 | * 51 | * @param name 指令名 52 | */ 53 | public CommandProperties(String name) { 54 | this(name, new ArrayList<>()); 55 | } 56 | 57 | /** 58 | * 指令属性构造器封装 59 | * 60 | * @param name 指令名 61 | * @param alias 其他指令名 62 | */ 63 | public CommandProperties(String name, String... alias) { 64 | this(name, new ArrayList<>(Arrays.asList(alias))); 65 | } 66 | 67 | /** 68 | * 构造CommandProperty 69 | * 70 | * @param name 指令名称 71 | */ 72 | public static CommandProperties name(String name) { 73 | return new CommandProperties(name); 74 | } 75 | 76 | /** 77 | * 添加指令别名 78 | * 79 | * @param alias 指令别名 80 | */ 81 | public CommandProperties alias(String alias) { 82 | this.alias.add(alias); 83 | return this; 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/DBVersionTable.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @Description: 某版本 自更新db table的sql 7 | * @author: magic chen 8 | * @date: 2020/8/20 15:25 9 | **/ 10 | public class DBVersionTable { 11 | /** 12 | * 当前数据库版本 13 | */ 14 | Version ver; 15 | 16 | /** 17 | * 更新至此版本需要执行sql 18 | */ 19 | List sqls; 20 | 21 | public Version getVer() { 22 | return ver; 23 | } 24 | 25 | public void setVer(Version ver) { 26 | this.ver = ver; 27 | } 28 | 29 | public List getSqls() { 30 | return sqls; 31 | } 32 | 33 | public void setSqls(List sqls) { 34 | this.sqls = sqls; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/FunnyText.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | /** 4 | * @Description: 文案数据 5 | * @author: magic chen 6 | * @date: 2022/7/18 11:15 7 | **/ 8 | public class FunnyText { 9 | 10 | String hash; 11 | String content; 12 | 13 | public FunnyText() { 14 | } 15 | 16 | public FunnyText(String hash, String content) { 17 | this.hash = hash; 18 | this.content = content; 19 | } 20 | 21 | public String getHash() { 22 | return hash; 23 | } 24 | 25 | public void setHash(String hash) { 26 | this.hash = hash; 27 | } 28 | 29 | public String getContent() { 30 | return content; 31 | } 32 | 33 | public void setContent(String content) { 34 | this.content = content; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/Remind.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | /** 4 | * @Description: 备忘 5 | * @author: magic chen 6 | * @date: 2023/4/13 16:03 7 | **/ 8 | public class Remind { 9 | 10 | private String taskKey; // remind的 key 11 | private Long gid; // 群号 12 | private Long atId; // @的成员 13 | private String remind; // 备忘内容 14 | private Integer status; // 0 = 已取消 ,1 = 未取消 15 | private Long dateL; // 触发时间点 16 | 17 | public String getTaskKey() { 18 | return taskKey; 19 | } 20 | 21 | public void setTaskKey(String taskKey) { 22 | this.taskKey = taskKey; 23 | } 24 | 25 | public Long getGid() { 26 | return gid; 27 | } 28 | 29 | public void setGid(Long gid) { 30 | this.gid = gid; 31 | } 32 | 33 | public Long getAtId() { 34 | return atId; 35 | } 36 | 37 | public void setAtId(Long atId) { 38 | this.atId = atId; 39 | } 40 | 41 | public String getRemind() { 42 | return remind; 43 | } 44 | 45 | public void setRemind(String remind) { 46 | this.remind = remind; 47 | } 48 | 49 | public Integer getStatus() { 50 | return status; 51 | } 52 | 53 | public void setStatus(Integer status) { 54 | this.status = status; 55 | } 56 | 57 | public Long getDateL() { 58 | return dateL; 59 | } 60 | 61 | public void setDateL(Long dateL) { 62 | this.dateL = dateL; 63 | } 64 | 65 | 66 | @Override 67 | public String toString() { 68 | return "Remind{" + 69 | "taskKey='" + taskKey + '\'' + 70 | ", gid=" + gid + 71 | ", atId=" + atId + 72 | ", remind='" + remind + '\'' + 73 | ", status=" + status + 74 | ", dateL=" + dateL + 75 | '}'; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/UserPlan.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | /** 4 | * @Description: 用户计划表 5 | * @author: magic chen 6 | * @date: 2020/8/21 17:18 7 | **/ 8 | public class UserPlan { 9 | 10 | Integer id; 11 | 12 | String uid; 13 | 14 | Integer itemId; 15 | 16 | String itemName; 17 | 18 | Integer nowNum; 19 | 20 | Integer planNum; 21 | 22 | 23 | public Integer getId() { 24 | return id; 25 | } 26 | 27 | public void setId(Integer id) { 28 | this.id = id; 29 | } 30 | 31 | public String getUid() { 32 | return uid; 33 | } 34 | 35 | public void setUid(String uid) { 36 | this.uid = uid; 37 | } 38 | 39 | public Integer getItemId() { 40 | return itemId; 41 | } 42 | 43 | public void setItemId(Integer itemId) { 44 | this.itemId = itemId; 45 | } 46 | 47 | public String getItemName() { 48 | return itemName; 49 | } 50 | 51 | public void setItemName(String itemName) { 52 | this.itemName = itemName; 53 | } 54 | 55 | public Integer getNowNum() { 56 | return nowNum; 57 | } 58 | 59 | public void setNowNum(Integer nowNum) { 60 | this.nowNum = nowNum; 61 | } 62 | 63 | public Integer getPlanNum() { 64 | return planNum; 65 | } 66 | 67 | public void setPlanNum(Integer planNum) { 68 | this.planNum = planNum; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/Version.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo; 2 | 3 | /** 4 | * @Description: 版本号 5 | * @author: magic chen 6 | * @date: 2020/8/20 15:23 7 | **/ 8 | public class Version implements Comparable { 9 | 10 | Long main; 11 | 12 | Long child; 13 | 14 | public Version() { 15 | super(); 16 | } 17 | 18 | public Version(Long main, Long child) { 19 | this.main = main; 20 | this.child = child; 21 | } 22 | 23 | public Version(String ver) { 24 | String[] temp = ver.split("\\."); 25 | this.main = Long.valueOf(temp[0]); 26 | this.child = Long.parseLong(temp[1]) * 10L + Long.parseLong(temp[2]); 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | Long m = this.child / 10; 32 | Long e = this.child % 10; 33 | return this.main + "." + m + "." + e; 34 | } 35 | 36 | public Long getMain() { 37 | return main; 38 | } 39 | 40 | public void setMain(Long main) { 41 | this.main = main; 42 | } 43 | 44 | public Long getChild() { 45 | return child; 46 | } 47 | 48 | public void setChild(Long child) { 49 | this.child = child; 50 | } 51 | 52 | public Version upMain() { 53 | this.main++; 54 | this.child = 0L; 55 | return this; 56 | } 57 | 58 | public Version upChild() { 59 | this.child++; 60 | return this; 61 | } 62 | 63 | 64 | @Override 65 | public int compareTo(Version o) { 66 | if (this.main > o.getMain()) { 67 | return 1; 68 | } else if (this.main < o.getMain()) { 69 | return -1; 70 | } else { 71 | if (this.child > o.getChild()) { 72 | return 1; 73 | } else if (this.child < o.getChild()) { 74 | return -1; 75 | } else { 76 | return 0; 77 | } 78 | } 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/currency/UserCoin.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.currency; 2 | 3 | /** 4 | * @Description: 用户货币对象 5 | * @author: magic chen 6 | * @date: 2020/12/2 16:47 7 | **/ 8 | public class UserCoin { 9 | 10 | // 用户qq号 11 | Long uid; 12 | 13 | // 用户货币 魔力币 14 | Long magicCoin; 15 | 16 | // 开户时间 yyyy-MM-dd HH:mm:ss 17 | String time; 18 | 19 | // 账户是否可用 20 | Boolean available; 21 | 22 | public Long getUid() { 23 | return uid; 24 | } 25 | 26 | public void setUid(Long uid) { 27 | this.uid = uid; 28 | } 29 | 30 | public Long getMagicCoin() { 31 | return magicCoin; 32 | } 33 | 34 | public void setMagicCoin(Long magicCoin) { 35 | this.magicCoin = magicCoin; 36 | } 37 | 38 | public String getTime() { 39 | return time; 40 | } 41 | 42 | public void setTime(String time) { 43 | this.time = time; 44 | } 45 | 46 | public Boolean getAvailable() { 47 | return available; 48 | } 49 | 50 | public void setAvailable(Boolean available) { 51 | this.available = available; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcr/Boss.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcr; 2 | 3 | /** 4 | * @Description: pcr 公会战boss 5 | * @author: magic chen 6 | * @date: 2020/8/22 11:45 7 | **/ 8 | public class Boss { 9 | 10 | // 一个自增id 11 | Integer id; 12 | 13 | // 群号 14 | Long gid; 15 | 16 | // 是几周目boss 1~n 17 | Integer cycle; 18 | 19 | // 这个boss是老几 1~5 20 | Integer num; 21 | 22 | // 总血量 23 | Long hp; 24 | 25 | // 当前血量 26 | Long hpnow; 27 | 28 | //是否当前boss 29 | Boolean active; 30 | 31 | 32 | public void setId(Integer id) { 33 | this.id = id; 34 | } 35 | 36 | public void setGid(Long gid) { 37 | this.gid = gid; 38 | } 39 | 40 | public void setCycle(Integer cycle) { 41 | this.cycle = cycle; 42 | } 43 | 44 | public void setNum(Integer num) { 45 | this.num = num; 46 | } 47 | 48 | public void setHp(Long hp) { 49 | this.hp = hp; 50 | } 51 | 52 | public void setHpnow(Long hpnow) { 53 | this.hpnow = hpnow; 54 | } 55 | 56 | public void setActive(Boolean active) { 57 | this.active = active; 58 | } 59 | 60 | public Integer getId() { 61 | return id; 62 | } 63 | 64 | public Long getGid() { 65 | return gid; 66 | } 67 | 68 | public Integer getCycle() { 69 | return cycle; 70 | } 71 | 72 | public Integer getNum() { 73 | return num; 74 | } 75 | 76 | public Long getHp() { 77 | return hp; 78 | } 79 | 80 | public Long getHpnow() { 81 | return hpnow; 82 | } 83 | 84 | public Boolean getActive() { 85 | return active; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcr/BossLock.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcr; 2 | 3 | /** 4 | * @Description: 锁定boss 锁定只维持3分钟 5 | * @author: magic chen 6 | * @date: 2020/8/23 10:08 7 | **/ 8 | public class BossLock { 9 | 10 | public static String getLockname(Long gid) { 11 | return "BossLock" + gid; 12 | } 13 | 14 | //锁定类型为 申请出刀 15 | public static final String request = "request"; 16 | 17 | public BossLock(Long uid, String uname, String desc) { 18 | this.uid = uid; 19 | this.desc = desc; 20 | this.uname = uname; 21 | } 22 | 23 | public BossLock() { 24 | } 25 | 26 | // 锁定人 27 | Long uid; 28 | 29 | // 锁定类型 申请出刀会在出刀后自动解锁 30 | String desc; 31 | 32 | // 锁定用户名 33 | String uname; 34 | 35 | public void setUid(Long uid) { 36 | this.uid = uid; 37 | } 38 | 39 | public void setDesc(String desc) { 40 | this.desc = desc; 41 | } 42 | 43 | public Long getUid() { 44 | return uid; 45 | } 46 | 47 | public String getDesc() { 48 | return desc; 49 | } 50 | 51 | public void setUname(String uname) { 52 | this.uname = uname; 53 | } 54 | 55 | public String getUname() { 56 | return uname; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcr/Guild.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcr; 2 | 3 | /** 4 | * @Description: pcr 工会模型 5 | * @author: magic chen 6 | * @date: 2020/8/22 11:37 7 | **/ 8 | public class Guild { 9 | 10 | // 群号 11 | Long gid; 12 | 13 | // 公会名(以创建时群名为准) 14 | String gname; 15 | 16 | 17 | public void setGid(Long gid) { 18 | this.gid = gid; 19 | } 20 | 21 | public void setGname(String gname) { 22 | this.gname = gname; 23 | } 24 | 25 | public Long getGid() { 26 | return gid; 27 | } 28 | 29 | public String getGname() { 30 | return gname; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcr/Notice.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcr; 2 | 3 | import com.whitemagic2014.dic.PcrNoticeType; 4 | 5 | /** 6 | * @Description: 通知 预约boss 和 挂树通知 7 | * @author: magic chen 8 | * @date: 2020/8/22 17:43 9 | **/ 10 | public class Notice { 11 | 12 | // 群号 13 | Long gid; 14 | 15 | // 用户qq 16 | Long uid; 17 | 18 | // 预约的是几王 1-5 19 | Integer bossNum; 20 | 21 | // 需要通知类型 挂树是这个boss死了通知 ,预约是这个boss出现通知 22 | PcrNoticeType type; 23 | 24 | public Long getGid() { 25 | return gid; 26 | } 27 | 28 | public Long getUid() { 29 | return uid; 30 | } 31 | 32 | public Integer getBossNum() { 33 | return bossNum; 34 | } 35 | 36 | public PcrNoticeType getType() { 37 | return type; 38 | } 39 | 40 | public void setGid(Long gid) { 41 | this.gid = gid; 42 | } 43 | 44 | public void setUid(Long uid) { 45 | this.uid = uid; 46 | } 47 | 48 | public void setBossNum(Integer bossNum) { 49 | this.bossNum = bossNum; 50 | } 51 | 52 | public void setType(PcrNoticeType type) { 53 | this.type = type; 54 | } 55 | 56 | @Override 57 | public String toString() { 58 | return "Notice{" + 59 | "gid=" + gid + 60 | ", uid=" + uid + 61 | ", bossNum=" + bossNum + 62 | ", type=" + type + 63 | '}'; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcr/User.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcr; 2 | 3 | import com.whitemagic2014.dic.UserRole; 4 | 5 | /** 6 | * @Description: 工会成员 7 | * @author: magic chen 8 | * @date: 2020/8/22 12:50 9 | **/ 10 | public class User { 11 | 12 | // 用户qq号 13 | Long uid; 14 | 15 | // 用户名(群昵称) 16 | String uname; 17 | 18 | // 所属公会 19 | Long gid; 20 | 21 | // 权限 和群里的权限无关 可能不是群管理员,但是可以是 公会战的管理员 22 | UserRole role; 23 | 24 | // 当天是否sl 每日一次 25 | Boolean sl; 26 | 27 | public void setUid(Long uid) { 28 | this.uid = uid; 29 | } 30 | 31 | public void setUname(String uname) { 32 | this.uname = uname; 33 | } 34 | 35 | public void setGid(Long gid) { 36 | this.gid = gid; 37 | } 38 | 39 | public void setRole(UserRole role) { 40 | this.role = role; 41 | } 42 | 43 | public void setSl(Boolean sl) { 44 | this.sl = sl; 45 | } 46 | 47 | public Long getUid() { 48 | return uid; 49 | } 50 | 51 | public String getUname() { 52 | return uname; 53 | } 54 | 55 | public Long getGid() { 56 | return gid; 57 | } 58 | 59 | public UserRole getRole() { 60 | return role; 61 | } 62 | 63 | public Boolean getSl() { 64 | return sl; 65 | } 66 | } 67 | 68 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcrjjc/Answer.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcrjjc; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | 6 | /** 7 | * @Description: jjc解法 8 | * @author: magic chen 9 | * @date: 2020/8/25 17:13 10 | **/ 11 | public class Answer { 12 | 13 | String id; 14 | 15 | List atk; 16 | 17 | List def; 18 | 19 | Integer up; 20 | 21 | Integer down; 22 | 23 | Date updated; 24 | 25 | public String getId() { 26 | return id; 27 | } 28 | 29 | public List getAtk() { 30 | 31 | return atk; 32 | } 33 | 34 | public List getDef() { 35 | return def; 36 | } 37 | 38 | public Integer getUp() { 39 | return up; 40 | } 41 | 42 | public Integer getDown() { 43 | return down; 44 | } 45 | 46 | public Date getUpdated() { 47 | return updated; 48 | } 49 | 50 | public void setId(String id) { 51 | this.id = id; 52 | } 53 | 54 | public void setAtk(List atk) { 55 | this.atk = atk; 56 | } 57 | 58 | public void setDef(List def) { 59 | this.def = def; 60 | } 61 | 62 | public void setUp(Integer up) { 63 | this.up = up; 64 | } 65 | 66 | public void setDown(Integer down) { 67 | this.down = down; 68 | } 69 | 70 | public void setUpdated(Date updated) { 71 | this.updated = updated; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/pojo/pcrjjc/TeamMember.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.pojo.pcrjjc; 2 | 3 | /** 4 | * @Description: jjc 队员 5 | * @author: magic chen 6 | * @date: 2020/8/25 17:17 7 | **/ 8 | public class TeamMember { 9 | 10 | //角色id 11 | Integer id; 12 | 13 | //星数 14 | Integer star; 15 | 16 | //专武 17 | Boolean equip; 18 | 19 | // 角色名 20 | String name; 21 | 22 | public Integer getId() { 23 | return id; 24 | } 25 | 26 | public Integer getStar() { 27 | return star; 28 | } 29 | 30 | public Boolean getEquip() { 31 | return equip; 32 | } 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setId(Integer id) { 39 | this.id = id; 40 | } 41 | 42 | public void setStar(Integer star) { 43 | this.star = star; 44 | } 45 | 46 | public void setEquip(Boolean equip) { 47 | this.equip = equip; 48 | } 49 | 50 | public void setName(String name) { 51 | this.name = name; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/ChatPGTService.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service; 2 | 3 | 4 | import com.github.WhiteMagic2014.function.GmpFunction; 5 | import com.github.WhiteMagic2014.gptApi.Chat.pojo.ChatMessage; 6 | import com.github.WhiteMagic2014.gptApi.Images.pojo.OpenAiImage; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Description: chat pgt 12 | * @author: magic chen 13 | * @date: 2023/2/10 15:26 14 | **/ 15 | public interface ChatPGTService { 16 | 17 | // 作图 18 | OpenAiImage image(String prompt); 19 | 20 | /** 21 | * 交谈 22 | * 23 | * @param session 对话session 24 | * @param prompt 对话 25 | * @return 26 | */ 27 | String chat(String session, String prompt); 28 | 29 | /** 30 | * 带有function调用的交谈 31 | * 32 | * @param session 33 | * @param prompt 34 | * @param functions 35 | * @return 36 | */ 37 | String chat(String session, String prompt, List functions); 38 | 39 | /** 40 | * 性格设定 41 | * 42 | * @param session 对话session 43 | * @param setting 性格设定 44 | * @return 45 | */ 46 | String setPersonality(String session, String setting); 47 | 48 | 49 | /** 50 | * 清除 session 上下文 51 | * 52 | * @param session 53 | * @return 54 | */ 55 | String clearLog(String session); 56 | 57 | 58 | /** 59 | * 调用基础的chat接口 60 | * 61 | * @param messages 62 | * @return 63 | */ 64 | String originChat(List messages); 65 | 66 | 67 | /** 68 | * 输入转向量 69 | * 70 | * @param inputs 71 | * @return 72 | */ 73 | List> input2Vector(List inputs); 74 | 75 | /** 76 | * 根据训练的数据向量 回答问题 77 | * 78 | * @param question 79 | * @return 80 | */ 81 | String answer(String question); 82 | 83 | /** 84 | * 重新读取数据向量集合 85 | * 86 | * @return 87 | */ 88 | String reloadVector(); 89 | 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/FunnyTextService.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service; 2 | 3 | /** 4 | * @Description: 夸夸service 5 | * @author: magic chen 6 | * @date: 2022/7/18 11:26 7 | **/ 8 | public interface FunnyTextService { 9 | 10 | 11 | /** 12 | * 获得彩虹屁 13 | * 14 | * @return 15 | */ 16 | String getChp(); 17 | 18 | /** 19 | * 获得毒鸡汤 20 | * 21 | * @return 22 | */ 23 | String getDjt(); 24 | 25 | /** 26 | * 获得朋友圈 27 | */ 28 | String getPyq(); 29 | 30 | /** 31 | * 注册夸夸 随机在用户发言后夸夸 32 | * 33 | * @param gid 群号 34 | * @param uid q号 35 | */ 36 | void registChp(Long gid, Long uid); 37 | 38 | /** 39 | * 取消夸夸 40 | * 41 | * @param gid 群号 42 | * @param uid q号 43 | */ 44 | void unRegistChp(Long gid, Long uid); 45 | 46 | /** 47 | * 检查是否需要夸夸 48 | * 49 | * @param gid 50 | * @param uid 51 | * @return 52 | */ 53 | boolean checkRequireChp(Long gid, Long uid); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/Pcrjjc.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service; 2 | 3 | import com.whitemagic2014.vo.PrivateModel; 4 | import com.whitemagic2014.pojo.pcrjjc.Answer; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @Description: pcr jjc search 10 | * @author: magic chen 11 | * @date: 2020/8/25 17:42 12 | **/ 13 | public interface Pcrjjc { 14 | 15 | 16 | /** 17 | * @Name: initNameFile 18 | * @Description: 初始化pcr name文件 19 | * @Param: 20 | * @Author: magic chen 21 | * @Date: 2020/8/26 16:31 22 | **/ 23 | void initNameFile(); 24 | 25 | /** 26 | * @Name: refreshNameFile 27 | * @Description: 刷新pcr name文件 当更新的时候可以手动触发 28 | * @Param: url 29 | * @Return: String 30 | * @Author: magic chen 31 | * @Date: 2020/8/26 14:55 32 | **/ 33 | PrivateModel refreshNameFile(String url); 34 | 35 | 36 | /** 37 | * @Name: reloadNameFile 38 | * @Description: 重新加载 nickname 文件(不下载新的文件) 39 | * @Param: 40 | * @Return: PrivateModel 41 | * @Author: magic chen 42 | * @Date: 2021/1/27 15:55 43 | **/ 44 | PrivateModel reloadNameFile(); 45 | 46 | /** 47 | * @Name: checkjjc 48 | * @Description: jjc查询 49 | * @Param: names 50 | * @Param: region 51 | * @Return: 52 | * @Author: magic chen 53 | * @Date: 2020/8/26 17:17 54 | **/ 55 | PrivateModel> checkjjc(List names, Integer region); 56 | 57 | 58 | /** 59 | * @Name: checkPcrdfansCode 60 | * @Description: 解析pcrdfans api code 61 | * @Param: code 62 | * @Return: PrivateModel 63 | * @Author: magic chen 64 | * @Date: 2020/11/4 10:57 65 | **/ 66 | PrivateModel checkPcrdfansCode(Integer code); 67 | 68 | 69 | /** 70 | * @Name: id2Name 71 | * @Description: id转name 如果有多个名字 随机返回一个中文名 72 | * @Param: pcr role id 73 | * @Return: pcr role name 74 | * @Author: magic chen 75 | * @Date: 2020/8/26 18:22 76 | **/ 77 | String id2Name(Integer id); 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/RemindService.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * @Description: 备忘功能service 7 | * @author: magic chen 8 | * @date: 2023/4/13 14:55 9 | **/ 10 | public interface RemindService { 11 | 12 | 13 | /** 14 | * 读取之前的备忘记录 15 | */ 16 | void loadTask(); 17 | 18 | /** 19 | * 群聊备忘 20 | * 21 | * @param gid 群id 22 | * @param atId 需要@的成员 23 | * @param msgStr 备忘内容 24 | * @param date 提醒时间 25 | * @return 备忘taskKey 26 | */ 27 | String groupRemind(Long gid, Long atId, String msgStr, Date date); 28 | 29 | 30 | /** 31 | * 私聊备忘 32 | * 33 | * @param uid 好友id 34 | * @param msgStr 备忘内容 35 | * @param date 提醒时间 36 | * @return 备忘taskKey 37 | */ 38 | String friendRemind(Long uid, String msgStr, Date date); 39 | 40 | /** 41 | * 取消备忘 42 | * 43 | * @param taskKey 44 | * @return 45 | */ 46 | String groupCancelRemind(String taskKey); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/UserCoinService.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service; 2 | 3 | import com.whitemagic2014.dic.CoinType; 4 | import com.whitemagic2014.pojo.currency.CoinLog; 5 | import com.whitemagic2014.vo.PrivateModel; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Description: 用户货币系统 11 | * @author: magic chen 12 | * @date: 2020/12/2 17:49 13 | **/ 14 | public interface UserCoinService { 15 | 16 | /** 17 | * @Name: createAccount 18 | * @Description: 用户开户 19 | * @Param: uid 20 | * @Param: gid 开户群 21 | * @Return: PrivateModel 22 | * @Author: magic chen 23 | * @Date: 2020/12/2 17:50 24 | **/ 25 | PrivateModel createAccount(Long uid,Long gid); 26 | 27 | 28 | /** 29 | * @Name: updateCoin 30 | * @Description: 变更类型 31 | * @Param: uid 用户账户 32 | * @Param: gid 发生在那个群(可以为空) 33 | * @Param: type 哪一种货币变更 34 | * @Param: amount 金额 为 -就是减少 35 | * @Param: remark 备注 36 | * @Return: PrivateModel 37 | * @Author: magic chen 38 | * @Date: 2020/12/2 17:52 39 | **/ 40 | PrivateModel updateCoin(Long uid, Long gid, CoinType type, Long amount, String remark); 41 | 42 | 43 | /** 44 | * @Name: checkLog 45 | * @Description: 根据条件查账 46 | * @Param: uid 47 | * @Param: gid 48 | * @Param: type 49 | * @Return: PrivateModel> 50 | * @Author: magic chen 51 | * @Date: 2020/12/2 18:14 52 | **/ 53 | PrivateModel> checkLog(Long uid, Long gid, CoinType type); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/impl/ChatLog.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service.impl; 2 | 3 | public class ChatLog { 4 | 5 | private String user; 6 | private String assistant; 7 | 8 | public ChatLog(String user, String assistant) { 9 | this.user = user; 10 | this.assistant = assistant; 11 | } 12 | 13 | public String getUser() { 14 | return user; 15 | } 16 | 17 | public void setUser(String user) { 18 | this.user = user; 19 | } 20 | 21 | public String getAssistant() { 22 | return assistant; 23 | } 24 | 25 | public void setAssistant(String assistant) { 26 | this.assistant = assistant; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/service/impl/OriginChatVO.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.service.impl; 2 | 3 | /** 4 | * @Description: 使用OriginChat 所需的参数 5 | * @author: magic chen 6 | * @date: 2023/4/17 15:08 7 | **/ 8 | public class OriginChatVO { 9 | 10 | String role;//system,user,assistant 11 | 12 | String prompt; 13 | 14 | public OriginChatVO(String role, String prompt) { 15 | this.role = role; 16 | this.prompt = prompt; 17 | } 18 | 19 | public OriginChatVO() { 20 | } 21 | public String getRole() { 22 | return role; 23 | } 24 | 25 | public void setRole(String role) { 26 | this.role = role; 27 | } 28 | 29 | public String getPrompt() { 30 | return prompt; 31 | } 32 | 33 | public void setPrompt(String prompt) { 34 | this.prompt = prompt; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/MagicGacha.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @Description: 通用抽奖模板 7 | * @author: magic chen 8 | * @date: 2020/8/20 15:04 9 | **/ 10 | public class MagicGacha { 11 | 12 | /** 13 | * 道具名-概率,概率0~10000 对应0%~100% 14 | */ 15 | Map itemAndRate; 16 | 17 | public MagicGacha(Map itemAndRate) { 18 | this.itemAndRate = itemAndRate; 19 | } 20 | 21 | public String gacha(int rate) { 22 | int area = 0; 23 | String result = ""; 24 | for (String item : itemAndRate.keySet()) { 25 | Integer rise = itemAndRate.get(item); 26 | if (area <= rate && rate < area + rise) { 27 | result = item; 28 | break; 29 | } else { 30 | area += rise; 31 | } 32 | } 33 | return result; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/MagicLogger.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util; 2 | 3 | import net.mamoe.mirai.utils.MiraiLoggerPlatformBase; 4 | import org.jetbrains.annotations.Nullable; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | /** 9 | * @Description: 用spring 的slf4j 实现 mirai 的log接口,让bot 层的log重定向到 spring log下 10 | * @author: magic chen 11 | * @date: 2020/9/1 11:18 12 | **/ 13 | public class MagicLogger extends MiraiLoggerPlatformBase { 14 | 15 | private static final Logger logger = LoggerFactory.getLogger("WMagicBotR"); 16 | 17 | @Override 18 | protected void debug0(@Nullable String s, @Nullable Throwable throwable) { 19 | logger.debug(s, throwable); 20 | } 21 | 22 | @Override 23 | protected void error0(@Nullable String s, @Nullable Throwable throwable) { 24 | logger.error(s, throwable); 25 | } 26 | 27 | @Override 28 | protected void info0(@Nullable String s, @Nullable Throwable throwable) { 29 | logger.info(s, throwable); 30 | } 31 | 32 | @Override 33 | protected void verbose0(@Nullable String s, @Nullable Throwable throwable) { 34 | logger.info(s, throwable); 35 | } 36 | 37 | @Override 38 | protected void warning0(@Nullable String s, @Nullable Throwable throwable) { 39 | logger.warn(s, throwable); 40 | } 41 | 42 | @Nullable 43 | @Override 44 | public String getIdentity() { 45 | return "WMagicBotR"; 46 | } 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/Path.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util; 2 | 3 | /** 4 | * @Description: 路径工具 5 | * @author: magic chen 6 | * @date: 2020/8/20 15:07 7 | **/ 8 | public class Path { 9 | 10 | 11 | /** 12 | * @Name: getPath 13 | * @Description: 获得当前运行环境path 14 | * @Param: 15 | * @Return: java.lang.String 16 | * @Author: magic chen 17 | * @Date: 2020/8/20 15:09 18 | **/ 19 | public static String getPath() { 20 | String path = Path.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 21 | if (System.getProperty("os.name").contains("dows")) { 22 | path = path.substring(1); 23 | } 24 | if (path.contains("jar")) { 25 | path = path.substring(0, path.lastIndexOf(".")); 26 | path = path.substring(0, path.lastIndexOf("/") + 1); 27 | } 28 | path = path.replace("target/classes/", "").replace("file:", ""); 29 | return path; 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/time/MagicOnceTask.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util.time; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * @Description: 扩展的 TimerTask 执行单次任务 执行后从注册中心将自己移除 7 | * @author: magic chen 8 | * @date: 2020/9/30 16:43 9 | **/ 10 | public class MagicOnceTask extends MagicTask { 11 | 12 | 13 | public static MagicOnceTask build(String key, Task taskTk) { 14 | return new MagicOnceTask(key, taskTk); 15 | } 16 | 17 | /** 18 | * 请使用 build 方法获取实例 19 | * 20 | * @param key 21 | * @param taskTk 22 | */ 23 | private MagicOnceTask(String key, Task taskTk) { 24 | super(key, taskTk); 25 | } 26 | 27 | @Override 28 | public void run() { 29 | logger.info("OnceTask [" + taskKey + "] Fired"); 30 | taskTk.handle(); 31 | // 单次任务 执行后从注册中心将自己移除 32 | cancel(); 33 | } 34 | 35 | public void schedule(long delay) { 36 | magicTimer.schedule(this, delay); 37 | } 38 | 39 | public void schedule(Date time) { 40 | magicTimer.schedule(this, time); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/time/MagicPeriodTask.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util.time; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * @Description: 扩展的 TimerTask 执行循环任务 7 | * @author: magic chen 8 | * @date: 2020/9/30 16:40 9 | **/ 10 | public class MagicPeriodTask extends MagicTask { 11 | 12 | 13 | public MagicPeriodTask build(String key, Task taskTk) { 14 | return new MagicPeriodTask(key, taskTk); 15 | } 16 | 17 | 18 | /** 19 | * 请使用 build 方法获取实例 20 | * 21 | * @param key 22 | * @param taskTk 23 | */ 24 | private MagicPeriodTask(String key, Task taskTk) { 25 | super(key, taskTk); 26 | } 27 | 28 | 29 | // 循环执行 在执行后不做特殊处理 30 | @Override 31 | public void run() { 32 | logger.info("PeriodTask [" + taskKey + "] Fired"); 33 | taskTk.handle(); 34 | } 35 | 36 | public void schedule(long delay, long period) { 37 | magicTimer.schedule(this, delay, period); 38 | } 39 | 40 | public void schedule(Date firstTime, long period) { 41 | magicTimer.schedule(this, firstTime, period); 42 | } 43 | 44 | public void scheduleAtFixedRate(long delay, long period) { 45 | magicTimer.scheduleAtFixedRate(this, delay, period); 46 | } 47 | 48 | public void scheduleAtFixedRate(Date firstTime, long period) { 49 | magicTimer.scheduleAtFixedRate(this, firstTime, period); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/time/MagicTask.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util.time; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import java.util.Timer; 7 | import java.util.TimerTask; 8 | 9 | /** 10 | * @Description: 扩展的 TimerTask 11 | * @author: magic chen 12 | * @date: 2020/9/30 15:08 13 | **/ 14 | public abstract class MagicTask extends TimerTask { 15 | 16 | protected static final Logger logger = LoggerFactory.getLogger(MagicTask.class); 17 | 18 | protected static Timer magicTimer = new Timer("magicTimer"); 19 | 20 | protected String taskKey; 21 | 22 | protected Task taskTk; 23 | 24 | 25 | /** 26 | * @Name: MagicTask 27 | * @Description: 在创建时候 在观察中心注册 28 | * @Param: key 29 | * @Param: tk 30 | * @Return: null 31 | * @Author: magic chen 32 | * @Date: 2021/1/7 16:10 33 | **/ 34 | public MagicTask(String key,Task tk) { 35 | taskKey = key; 36 | taskTk = tk; 37 | logger.info("Task ["+key+"] Regist"); 38 | MagicTaskObserver.addTask(key, this); 39 | } 40 | 41 | 42 | @Override 43 | public boolean cancel() { 44 | // 在取消任务的时候 从 注册中心 移除 task 45 | MagicTaskObserver.removeTask(taskKey); 46 | return super.cancel(); 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/time/MagicTaskObserver.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util.time; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | import java.util.Set; 6 | import java.util.TimerTask; 7 | 8 | /** 9 | * @Description: 用来管理定时 延时任务的 对象 10 | * @author: magic chen 11 | * @date: 2020/9/30 11:42 12 | **/ 13 | public class MagicTaskObserver { 14 | 15 | private static final Map taskMap = new HashMap<>(); 16 | 17 | /** 18 | * @Name: addTask 19 | * @Description: observer 注册 task 20 | * @Param: key 21 | * @Param: task 22 | * @Return: void 23 | * @Author: magic chen 24 | * @Date: 2020/9/30 17:28 25 | **/ 26 | public static void addTask(String key, TimerTask task) { 27 | taskMap.put(key, task); 28 | } 29 | 30 | /** 31 | * @Name: removeTask 32 | * @Description: observer 移除 task,仅从列表中移除,并未取消任务 33 | * @Param: key 34 | * @Return: void 35 | * @Author: magic chen 36 | * @Date: 2020/9/30 17:29 37 | **/ 38 | protected static void removeTask(String key) { 39 | taskMap.remove(key); 40 | } 41 | 42 | 43 | /** 44 | * 取消并移除 task 45 | * 46 | * @param key 47 | */ 48 | public static void cancelTask(String key) { 49 | taskMap.get(key).cancel(); 50 | taskMap.remove(key); 51 | } 52 | 53 | /** 54 | * @Name: checkTask 55 | * @Description: observer 检查 task 是否存在 56 | * @Param: key 57 | * @Return: boolean 58 | * @Author: magic chen 59 | * @Date: 2020/9/30 17:29 60 | **/ 61 | public static boolean checkTask(String key) { 62 | return taskMap.containsKey(key); 63 | } 64 | 65 | /** 66 | * @Name: showSchedule 67 | * @Description: 列出所有即将执行的 task 68 | * @Param: 69 | * @Return: java.util.Set 70 | * @Author: magic chen 71 | * @Date: 2020/9/30 17:30 72 | **/ 73 | public static Set showSchedule() { 74 | return taskMap.keySet(); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/whitemagic2014/util/time/Task.java: -------------------------------------------------------------------------------- 1 | package com.whitemagic2014.util.time; 2 | 3 | /** 4 | * @Description: magic task 任务代理 5 | * @author: magic chen 6 | * @date: 2021/1/7 16:05 7 | **/ 8 | @FunctionalInterface 9 | public interface Task { 10 | void handle(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.env.EnvironmentPostProcessor=com.whitemagic2014.config.ReadOutDesignatedConfiguration 2 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=WMagicBotR 2 | server.servlet.context-path=/botr 3 | server.port=28282 4 | project.version=@project.version@ 5 | ### spring框架log ,同时也是 bot 逻辑层的日志 ### 6 | logging.config=classpath:logback-spring.xml 7 | log.spring.name=WMagicBotR 8 | log.spring.path=logs/spring 9 | ### bot 网络层的日志 ### 10 | log.net.path=logs/net 11 | ########## 查询jjc作业接口 12 | pcrdfans.open=false 13 | pcrdfans.url=https://api.pcrdfans.com/x/v1/search 14 | pcrdfans.key= 15 | pcr.default.nicknamefile=https://raw.githubusercontent.com/pcrbot/pcr-nickname/master/nicknames_zh-cn.csv 16 | pcr.default.nickname=https://github.com/pcrbot/pcr-nickname/blob/master/nicknames_zh-cn.csv 17 | 18 | logging.level.com.whitemagic2014.dao=debug 19 | ###############thymeleaf配置########################## 20 | spring.thymeleaf.prefix=classpath:/templates/ 21 | spring.thymeleaf.suffix=.html 22 | spring.thymeleaf.mode=HTML 23 | spring.thymeleaf.encoding=UTF-8 24 | spring.thymeleaf.servlet.content-type=text/html 25 | # 开发阶段务必关闭缓存 (=false) 26 | spring.thymeleaf.cache=false -------------------------------------------------------------------------------- /src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | __ ____ __ _ ____ _ ____ 2 | \ \ / / \/ | __ _ __ _(_) ___| __ ) ___ | |_| _ \ 3 | \ \ /\ / /| |\/| |/ _` |/ _` | |/ __| _ \ / _ \| __| |_) | 4 | \ V V / | | | | (_| | (_| | | (__| |_) | (_) | |_| _ < 5 | \_/\_/ |_| |_|\__,_|\__, |_|\___|____/ \___/ \__|_| \_\ 6 | |___/ -------------------------------------------------------------------------------- /src/main/resources/mapper/BotDBMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | UPDATE DBInfo SET version = #{version} ,updateDate = #{updateDate} WHERE id = 1 11 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | ${sql} 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/mapper/CanEatMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | insert into can_eat(itemName,can) values (#{itemName},#{can}) 8 | 9 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/mapper/FunnyTextMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | insert into chp_data(hash, content) 12 | values (#{hash}, #{content}) 13 | 14 | 15 | 20 | 21 | 25 | 26 | 27 | insert into pyq_data(hash, content) 28 | values (#{hash}, #{content}) 29 | 30 | 31 | 36 | 37 | 41 | 42 | 43 | insert into djt_data(hash, content) 44 | values (#{hash}, #{content}) 45 | 46 | 47 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/main/resources/mapper/RemindMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | insert into `remind` 7 | 8 | 9 | taskKey, 10 | 11 | 12 | gid, 13 | 14 | 15 | atId, 16 | 17 | 18 | remind, 19 | 20 | 21 | status, 22 | 23 | 24 | dateL, 25 | 26 | 27 | 28 | 29 | #{taskKey}, 30 | 31 | 32 | #{gid}, 33 | 34 | 35 | #{atId}, 36 | 37 | 38 | #{remind}, 39 | 40 | 41 | #{status}, 42 | 43 | 44 | #{dateL}, 45 | 46 | 47 | 48 | 49 | 50 | 51 | update `remind` 52 | set status = 0 53 | where taskKey = #{taskKey} 54 | 55 | 56 | 57 | 63 | 64 | -------------------------------------------------------------------------------- /src/main/resources/mapper/UserCoinMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | insert into user_coin (uid, magicCoin, `time`, available) 11 | values (#{uid}, #{magicCoin}, #{time}, #{available}) 12 | 13 | 14 | 15 | update user_coin 16 | 17 | 18 | magicCoin = #{magicCoin}, 19 | 20 | 21 | `time` = #{time}, 22 | 23 | 24 | available = #{available}, 25 | 26 | 27 | where uid = #{uid} 28 | 29 | 30 | 31 | DELETE FROM user_coin where uid = #{uid} 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/main/resources/static/common.util.js: -------------------------------------------------------------------------------- 1 | function getApiPath() { 2 | //获取当前网址,如: http://localhost:8083/proj/meun.jsp 3 | var curWwwPath = window.document.location.href; 4 | //获取主机地址之后的目录,如: proj/meun.jsp 5 | var pathName = window.document.location.pathname; 6 | var pos = curWwwPath.indexOf(pathName); 7 | //获取主机地址,如: http://localhost:8083 8 | var localhostPath = curWwwPath.substring(0, pos); 9 | //获取带"/"的项目名,如:/proj 10 | var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1); 11 | return (localhostPath + projectName); 12 | } -------------------------------------------------------------------------------- /src/main/resources/templates/errorPage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 出错啦 6 | 7 | 8 | 9 | 10 | 11 | 42 | 43 | 44 |
45 |
46 |
47 |

48 |
49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/resources/templates/pcr/knife-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | (-) 8 | 9 | 10 |
11 | 12 | (-) 13 | 14 | 15 | 16 | (-) 17 | 18 | 19 | 20 | 21 |
22 |
23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /txlib/3.5.1/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.tim", 11 | "qua": "V1_AND_SQ_8.3.9_351_TIM_D", 12 | "version": "3.5.1", 13 | "code": "1298" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /txlib/3.5.1/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/3.5.1/libfekit.so -------------------------------------------------------------------------------- /txlib/3.5.1/libpoxy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/3.5.1/libpoxy.so -------------------------------------------------------------------------------- /txlib/3.5.2/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.tim", 11 | "qua": "V1_AND_SQ_8.3.9_352_TIM_D", 12 | "version": "3.5.2", 13 | "code": "1308" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /txlib/3.5.2/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/3.5.2/libfekit.so -------------------------------------------------------------------------------- /txlib/3.5.2/libpoxy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/3.5.2/libpoxy.so -------------------------------------------------------------------------------- /txlib/8.9.58/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537161402, 4 | "sub_app_id": 537161402, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.58.11170", 7 | "build_time": 1684467300, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2545", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1686334718, 15 | "qua": "V1_AND_SQ_8.9.58_4106_YYB_D", 16 | "protocol_type": 6 17 | } -------------------------------------------------------------------------------- /txlib/8.9.58/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537163098, 4 | "sub_app_id": 537163098, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.58.11170", 7 | "build_time": 1684467300, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2545", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1686334718, 15 | "qua": "V1_AND_SQ_8.9.58_4106_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.58/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": false, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.58_4106_YYB_D", 12 | "version": "8.9.58", 13 | "code": "4106" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": false 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } -------------------------------------------------------------------------------- /txlib/8.9.58/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.58/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.63/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537164888, 4 | "sub_app_id": 537164888, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.63.11390", 7 | "build_time": 1685069178, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2546", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1687796862, 15 | "qua": "V1_AND_SQ_8.9.63_4194_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.63/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537164840, 4 | "sub_app_id": 537164840, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.63.11390", 7 | "build_time": 1685069178, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2546", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1687796862, 15 | "qua": "V1_AND_SQ_8.9.63_4194_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.63/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": false, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.63_4194_YYB_D", 12 | "version": "8.9.63", 13 | "code": "4194" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": false 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } -------------------------------------------------------------------------------- /txlib/8.9.63/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.63/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.68/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537168361, 4 | "sub_app_id": 537168361, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.68.11565", 7 | "build_time": 1688523354, 8 | "apk_sign": "7772804f3cb4961f57cb764fbe4973e6", 9 | "sdk_version": "6.0.0.2549", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1689780543, 15 | "qua": "V1_AND_SQ_8.9.68_4264_YYB_D", 16 | "protocol_type": 6 17 | } -------------------------------------------------------------------------------- /txlib/8.9.68/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537168313, 4 | "sub_app_id": 537168313, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.68.11565", 7 | "build_time": 1688523354, 8 | "apk_sign": "7772804f3cb4961f57cb764fbe4973e6", 9 | "sdk_version": "6.0.0.2549", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1689780543, 15 | "qua": "V1_AND_SQ_8.9.68_4264_YYB_D", 16 | "protocol_type": 1 17 | } -------------------------------------------------------------------------------- /txlib/8.9.68/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": false, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.68_4264_YYB_D", 12 | "version": "8.9.68", 13 | "code": "4264" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": true 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } -------------------------------------------------------------------------------- /txlib/8.9.68/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.68/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.70/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537169976, 4 | "sub_app_id": 537169976, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.70.11635", 7 | "build_time": 1689956914, 8 | "apk_sign": "c67b3780e3a04a0de773115beafebb42", 9 | "sdk_version": "6.0.0.2551", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1690350020, 15 | "qua": "V1_AND_SQ_8.9.70_4330_YYB_D", 16 | "protocol_type": 6 17 | } -------------------------------------------------------------------------------- /txlib/8.9.70/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537169928, 4 | "sub_app_id": 537169928, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.70.11635", 7 | "build_time": 1689956914, 8 | "apk_sign": "c67b3780e3a04a0de773115beafebb42", 9 | "sdk_version": "6.0.0.2551", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1690350020, 15 | "qua": "V1_AND_SQ_8.9.70_4330_YYB_D", 16 | "protocol_type": 1 17 | } -------------------------------------------------------------------------------- /txlib/8.9.70/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": false, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.70_4330_YYB_D", 12 | "version": "8.9.70", 13 | "code": "4330" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": false 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } -------------------------------------------------------------------------------- /txlib/8.9.70/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.70/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.71/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537170072, 4 | "sub_app_id": 537170072, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.71.11735", 7 | "build_time": 1688560152, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2551", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1688560152, 15 | "qua": "V1_AND_SQ_8.9.71_4332_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.71/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.71_4332_YYB_D", 12 | "version": "8.9.71", 13 | "code": "4332" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": true 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /txlib/8.9.71/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.71/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.73/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537170996, 4 | "sub_app_id": 537170996, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.73.11945", 7 | "build_time": 1690371091, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2553", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1691057433, 15 | "qua": "V1_AND_SQ_8.9.73_4416_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.73/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537171689, 4 | "sub_app_id": 537171689, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.73.11945", 7 | "build_time": 1690371091, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2553", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1691057433, 15 | "qua": "V1_AND_SQ_8.9.73_4416_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.73/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "114514", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.73_4416_YYB_D", 12 | "version": "8.9.73", 13 | "code": "4416" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "debug": true 19 | }, 20 | "black_list": [ 21 | 1008611 22 | ] 23 | } -------------------------------------------------------------------------------- /txlib/8.9.73/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.73/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.76/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537173525, 4 | "sub_app_id": 537173525, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.76.12115", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.76_4484_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.76/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537173477, 4 | "sub_app_id": 537173477, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.76.12115", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.76_4484_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.76/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "count": 1, 8 | "key": "114514", 9 | "auto_register": true, 10 | "protocol": { 11 | "package_name": "com.tencent.mobileqq", 12 | "qua": "V1_AND_SQ_8.9.76_4484_YYB_D", 13 | "version": "8.9.76", 14 | "code": "4484" 15 | }, 16 | "unidbg": { 17 | "dynarmic": true, 18 | "unicorn": false, 19 | "kvm": false, 20 | "debug": false 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /txlib/8.9.76/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.76/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.78/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537175354, 4 | "sub_app_id": 537175354, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.78.12275", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.78_4548_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.78/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537175315, 4 | "sub_app_id": 537175315, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.78.12275", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.78_4548_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.78/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "count": 1, 8 | "key": "114514", 9 | "auto_register": true, 10 | "protocol": { 11 | "package_name": "com.tencent.mobileqq", 12 | "qua": "V1_AND_SQ_8.9.78_4548_YYB_D", 13 | "version": "8.9.78", 14 | "code": "4548" 15 | }, 16 | "unidbg": { 17 | "dynarmic": true, 18 | "unicorn": false, 19 | "kvm": false, 20 | "debug": false 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /txlib/8.9.78/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.78/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.80/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537176902, 4 | "sub_app_id": 537176902, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.80.12440", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.80_4614_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.80/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537176863, 4 | "sub_app_id": 537176863, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.80.12440", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.80_4614_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.80/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "count": 1, 8 | "key": "114514", 9 | "auto_register": true, 10 | "protocol": { 11 | "package_name": "com.tencent.mobileqq", 12 | "qua": "V1_AND_SQ_8.9.80_4614_YYB_D", 13 | "version": "8.9.80", 14 | "code": "4614" 15 | }, 16 | "unidbg": { 17 | "dynarmic": true, 18 | "unicorn": false, 19 | "kvm": false, 20 | "debug": false 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /txlib/8.9.80/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.80/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.83/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537178685, 4 | "sub_app_id": 537178685, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.83.12605", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.83_4680_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.83/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537178646, 4 | "sub_app_id": 537178646, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.83.12605", 7 | "build_time": 1691565978, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2554", 10 | "sso_version": 20, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 34869472, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1691565978", 15 | "qua": "V1_AND_SQ_8.9.83_4680_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.83/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "count": 1, 8 | "key": "114514", 9 | "auto_register": true, 10 | "protocol": { 11 | "package_name": "com.tencent.mobileqq", 12 | "qua": "V1_AND_SQ_8.9.83_4680_YYB_D", 13 | "version": "8.9.83", 14 | "code": "4680" 15 | }, 16 | "unidbg": { 17 | "dynarmic": true, 18 | "unicorn": false, 19 | "kvm": false, 20 | "debug": false 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /txlib/8.9.83/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.83/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.85/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537179875, 4 | "sub_app_id": 537179875, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.85.12820", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1697015435", 15 | "qua": "V1_AND_SQ_8.9.85_4766_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.85/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537180568, 4 | "sub_app_id": 537180568, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.85.12820", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1697015435", 15 | "qua": "V1_AND_SQ_8.9.85_4766_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.85/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "Eden", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.85_4766_YYB_D", 12 | "version": "8.9.85", 13 | "code": "4766" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "kvm": false, 19 | "debug": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /txlib/8.9.85/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.85/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.88/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": "537182808", 4 | "sub_app_id": "537182808", 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.88.13035", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1697015435, 15 | "qua": "V1_AND_SQ_8.9.88_4852_YYB_D", 16 | "protocol_type": 6 17 | } -------------------------------------------------------------------------------- /txlib/8.9.88/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": "537182769", 4 | "sub_app_id": "537182769", 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.88.13035", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": 1697015435, 15 | "qua": "V1_AND_SQ_8.9.88_4852_YYB_D", 16 | "protocol_type": 1 17 | } -------------------------------------------------------------------------------- /txlib/8.9.88/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "F270BA2B1CB8", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.88_4852_YYB_D", 12 | "version": "8.9.88", 13 | "code": "4852" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "kvm": false, 19 | "debug": true 20 | } 21 | } -------------------------------------------------------------------------------- /txlib/8.9.88/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.88/libfekit.so -------------------------------------------------------------------------------- /txlib/8.9.90/android_pad.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537185046, 4 | "sub_app_id": 537185046, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.90.13250", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1697015435", 15 | "qua": "V1_AND_SQ_8.9.90_4938_YYB_D", 16 | "protocol_type": 6 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.90/android_phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk_id": "com.tencent.mobileqq", 3 | "app_id": 537185007, 4 | "sub_app_id": 537185007, 5 | "app_key": "0S200MNJT807V3GE", 6 | "sort_version_name": "8.9.90.13250", 7 | "build_time": 1697015435, 8 | "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", 9 | "sdk_version": "6.0.0.2556", 10 | "sso_version": 21, 11 | "misc_bitmap": 150470524, 12 | "main_sig_map": 16724722, 13 | "sub_sig_map": 66560, 14 | "dump_time": "1697015435", 15 | "qua": "V1_AND_SQ_8.9.90_4938_YYB_D", 16 | "protocol_type": 1 17 | } 18 | -------------------------------------------------------------------------------- /txlib/8.9.90/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "host": "0.0.0.0", 4 | "port": 8080 5 | }, 6 | "share_token": false, 7 | "key": "Eden", 8 | "auto_register": true, 9 | "protocol": { 10 | "package_name": "com.tencent.mobileqq", 11 | "qua": "V1_AND_SQ_8.9.90_4938_YYB_D", 12 | "version": "8.9.90", 13 | "code": "4938" 14 | }, 15 | "unidbg": { 16 | "dynarmic": false, 17 | "unicorn": true, 18 | "kvm": false, 19 | "debug": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /txlib/8.9.90/libfekit.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhiteMagic2014/WMagicBotR/c07ffd914b2f7b82f5e14bc2d6bffc504e1d974f/txlib/8.9.90/libfekit.so -------------------------------------------------------------------------------- /txlib/README.md: -------------------------------------------------------------------------------- 1 | # 协议信息存放点 2 | 3 | 这里将存放各协议版本的**签名服务配置**以及**协议版本信息**。 4 | 这些资料可以用于 `mirai` 以及 `go-cqhttp`,升级协议版本以及使用签名服务。 5 | 协议版本信息使用 [RomiChan/protocol-versions](https://github.com/RomiChan/protocol-versions) 的格式规范。 6 | 7 | 协议信息里,`qua` 含有 `YYB_D` 的为正式版,**非正式版**登录可能会有内测、灰度测试白名单等问题导致无法登录或**冻结**,请**慎重使用**。 8 | 如果这里的信息没有及时更新,你可以使用 [MrXiaoM/Eden](https://github.com/MrXiaoM/Eden) 自行提取。 9 | 10 | 理论上版本越高检测越严,每次更新都有可能增加新的检测,不保证 `>=8.9.73` 协议版本的可用性。 11 | --------------------------------------------------------------------------------