/// <summary> /// 更新定时任务 /// </summary> public static void UpdateTimerTask() { ArrayList data = XmlApi.nlist_get("timer", "timertask"); ArrayList list = data[1] as ArrayList; list.RemoveAt(list.Count - 1); Tool.Timer.timers = list; }
public static void Timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) //1s定时程序 { // 得到 hour minute second 如果等于某个值就开始执行某个程序。 int intHour = e.SignalTime.Hour; int intMinute = e.SignalTime.Minute; int intSecond = e.SignalTime.Second; count++; if (count >= luaWait)//每分钟执行脚本 { count = 0; LuaEnv.RunLua("", "envent/TimerMinute.lua"); } //检查升级 if (intSecond == 0 && intMinute == 0 && intHour == 3) { //检查是否开启了检查更新 if (XmlApi.xml_get("settings", "autoUpdate").ToUpper() != "TRUE") { return; } Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "正在检查脚本更新"); string gitPath = Common.AppDirectory + "git/"; if (!Repository.IsValid(gitPath)) { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Error, "lua脚本更新检查", "未检测到git仓库!"); return;//工程不存在 } using (var repo = new Repository(gitPath)) { string lastCommit = repo.Commits.First().Sha;//当前提交的特征值 // Credential information to fetch LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions(); options.FetchOptions = new FetchOptions(); // User information to create a merge commit var signature = new LibGit2Sharp.Signature( new Identity("MERGE_USER_NAME", "MERGE_USER_EMAIL"), DateTimeOffset.Now); // Pull try { Commands.Pull(repo, signature, options); } catch { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Warning, "lua脚本更新检查", "代码拉取失败,请检查网络!"); return; } string newCommit = repo.Commits.First().Sha;//pull后的特征值 if (lastCommit != newCommit) { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "检测到更新内容,正在替换脚本\r\n" + "注意可能会出现消息报错,无视就好"); Directory.Delete(Common.AppDirectory + "lua", true); Tools.CopyDirectory(gitPath + "appdata/lua", Common.AppDirectory + "lua"); Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "脚本更新完成!"); } else { Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "没有检测到脚本更新"); } } } }
/// <summary> /// 插件启动后的所有东西初始化 /// </summary> public static void Initial() { RunSandBox(""); setting = new Settings(); //加载配置 if (File.Exists(Common.AppData.CQApi.AppDirectory + "settings.json")) { RecordSetting record = JsonConvert.DeserializeObject <RecordSetting>( File.ReadAllText(Common.AppData.CQApi.AppDirectory + "settings.json")); setting.TcpServerPort = record.TcpServerPort; setting.WebSocketServerPort = record.WebSocketServerPort; setting.WebSocketClientConnect = record.WebSocketClientConnect; setting.SJFSocketConnect = record.SJFSocketConnect; setting.HttpListenHost = record.HttpListenHost; setting.HttpListenSub = record.HttpListenSub; setting.HttpListenPort = record.HttpListenPort; setting.TcpServerEnable = record.TcpServerEnable; setting.WebSocketServerEnable = record.WebSocketServerEnable; setting.WebSocketClientEnable = record.WebSocketClientEnable; setting.SJFSocketEnable = record.SJFSocketEnable; setting.HttpListenEnable = record.HttpListenEnable; } else { setting = new Settings(); setting.TcpServerEnable = setting.TcpServerEnable; setting.WebSocketServerEnable = setting.WebSocketServerEnable; setting.WebSocketClientEnable = setting.WebSocketClientEnable; setting.SJFSocketEnable = setting.SJFSocketEnable; setting.HttpListenEnable = setting.HttpListenEnable; } //TimerRun.Start();//清理文件定时器任务,可能存在内存泄漏问题,暂时不加这个功能 TcpServer.SendList();//tcp定时器任务 if (initialFlag) { return; } initialFlag = true; Tools.Manager.GroupManager.Update(); //ui界面数据绑定 Global.Settings = setting; //git按键回调函数 Global.GitInitial += (s, e) => { string gitPath = Common.AppData.CQApi.AppDirectory + "lua/"; if (Directory.Exists(gitPath)) { if (!Repository.IsValid(gitPath)) { Common.AppData.CQLog.Warning("Lua插件初始化脚本", $"lua目录已存在,且不存在Git结构,为了防止误删文件,请自行处理删除目录后再试({gitPath})"); return; } else { try { Common.AppData.CQLog.Info("Lua插件更新脚本", "正在更新脚本,请稍后"); var options = new PullOptions { FetchOptions = new FetchOptions() }; var signature = new Signature( new Identity("MERGE_USER_NAME", "MERGE_USER_EMAIL"), DateTimeOffset.Now); using var repo = new Repository(gitPath); Commands.Pull(repo, signature, options); LuaStates.Clear(); LuaStates.Run("main", "AppEnable", new { }); Common.AppData.CQLog.Info("Lua插件初始化脚本", "更新完成!您可以开始用了"); return; } catch (Exception ee) { Common.AppData.CQLog.Warning("Lua插件更新脚本", $"更新脚本文件失败,错误信息:{ee.Message}"); return;//pull失败 } } } Common.AppData.CQLog.Info("Lua插件初始化脚本", "正在下载初始脚本,请稍后"); try { Repository.Clone("https://gitee.com/chenxuuu/receiver-meow-lua.git", gitPath); LuaStates.Clear(); LuaStates.Run("main", "AppEnable", new { }); Common.AppData.CQLog.Info("Lua插件初始化脚本", "初始化完成!您可以开始用了"); } catch (Exception ee) { Common.AppData.CQLog.Warning("Lua插件初始化脚本", $"初始化脚本文件失败,错误信息:{ee.Message}"); return;//clone失败,还原 } }; //重载虚拟机按键回调函数 Global.LuaInitial += (s, e) => { LuaStates.Clear(); LuaStates.Run("main", "AppEnable", new { }); }; //重载Xml按键回调函数 Global.XmlInitial += (s, e) => { XmlApi.Clear(); }; }