/// <summary> /// 本地图片拉取 /// </summary> /// <param name="ls"></param> /// <param name="e"></param> /// <returns></returns> public static SendText LocalPic_Image(string orderText, long GroupID, long QQID) { SendText result = new SendText(); CustomObject item = LocalPicOrderList.Where(x => x.Order == orderText) .OrderBy(_ => Guid.NewGuid()).First(); result.HandlingFlag = item.AutoRevoke; try { DirectoryInfo directoryInfo = new DirectoryInfo(item.Path); FileInfo[] fileInfos = directoryInfo.GetFiles("*.*") .Where(x => x.FullName.EndsWith("jpg") || x.FullName.EndsWith("gif") || x.FullName.EndsWith("png") || x.FullName.EndsWith("bmp") || x.FullName.EndsWith("webp") || x.FullName.EndsWith("tif") || x.FullName.EndsWith("tga")).ToArray(); //随机取一个 var picinfo = fileInfos.OrderBy(_ => Guid.NewGuid()).First(); string picpathOrigin = picinfo.FullName; if (!Directory.Exists(MainSave.ImageDirectory + "\\LocalPic")) { Directory.CreateDirectory(MainSave.ImageDirectory + "\\LocalPic"); } string picpathFinal = MainSave.ImageDirectory + "\\LocalPic\\" + picinfo.Name; if (!File.Exists(picpathFinal)) { File.Copy(picpathOrigin, picpathFinal); } MainSave.CQLog.Info("本地图片接口", $"图片获取成功,尝试发送"); CommonHelper.AntiHX(picpathFinal); string imageCQCodePath = Path.Combine("LocalPic", picinfo.Name); result.MsgToSend.Add(CQApi.CQCode_Image(imageCQCodePath).ToSendString()); return(result); } catch (Exception exc) { result.MsgToSend.Add("本地图片接口调用失败"); MainSave.CQLog.Info("本地图片接口", $"调用失败,错误信息:{exc.Message}"); if (item.Usestrict) { QuotaHelper.PlusMemberQuota(GroupID, QQID); } return(result); } }
public FunctionResult Progress(CQGroupMessageEventArgs e) { FunctionResult result = new FunctionResult() { Result = true, SendFlag = false, }; //检查额度限制 if (QuotaHelper.QuotaCheck(e.FromGroup, e.FromQQ) is false) { return(result); } //拉取图片,处理时间受地区与网速限制 var pic = GetLoliConPicHelper .GetSetuPic(e.Message.Text.Substring(GetOrderStr().Length), out string objectTostring); pic.SendID = e.FromGroup.Id; try { SendText text = new SendText { MsgToSend = new List <string>(), SendID = e.FromGroup, }; objectTostring.Replace("<@>", e.FromQQ.CQCode_At().ToSendString()); // 处理返回文本,替换可配置文本为结果,发送处理结果 if (!string.IsNullOrWhiteSpace(objectTostring)) { text.MsgToSend.Add(objectTostring); } result.SendObject.Add(text); result.SendFlag = true; IniConfig ini = MainSave.ConfigMain; if (pic.HandlingFlag)//是否成功处理消息 { //TODO: Improve this code //处理一番后发现, 成功发送时只有一个图片文本, 虽说不规范, 以后再说吧 var msg = e.FromGroup.SendGroupMessage(pic.MsgToSend[0]); if (PublicVariables.R18_PicRevoke)//自动撤回 { Task task = new Task(() => { Thread.Sleep(PublicVariables.R18_RevokeTime * 1000); e.CQApi.RemoveMessage(msg.Id); }); task.Start(); } } else//处理消息失败 { result.SendFlag = true; result.SendObject.Add(pic); QuotaHelper.PlusMemberQuota(e.FromGroup.Id, e.FromQQ.Id); } } catch (Exception exc) { SendText text = new SendText { MsgToSend = new List <string>(), SendID = e.FromGroup, }; text.MsgToSend.Add($"发生未知错误,错误信息:在{exc.Source}上, 发生错误: {exc.Message}"); result.SendObject.Add(text); result.SendFlag = true; } return(result); }