using Api.Framework; using Api.Framework.SDK; using Api.Framework.Tools; using Api.Framework.Utils; using CsharpHttpHelper; using Main.Entitys; using Main.Properties; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using static Api.Framework.Tools.TBHelper; namespace Main { public class Class1 : Plugin { public Class1() { this.Name = Resources.PluginName; this.Note = Resources.PluginNote; this.Logo = Resources.通用; } #region 自定义变量 public static Config Config; private MainForm mainForm = null; // public static VariateReplace variateReplace = null; #endregion public override void Start() { try { var session = ApiClient.GetSession(); #region 判断表是否存在,不存在创建表 if (!session.TableExist()) { session.CreateTable(); session.AddUnique("rid"); } #endregion //创建配置文件 Config = this.ReadConfig(); SDK.ReciveIMEvent += SDK_ReciveIMEvent; SDK.WXNewFriendEvent += SDK_WXNewFriendEvent; SDK.WXApplyFriendEvent += SDK_WXApplyFriendEvent; } catch (Exception ex) { this.OnLog(ex.Message); } } private void SDK_WXApplyFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXApplyFriend e) { var strb = new StringBuilder(); strb.Append($"新用户:{e.NewFriendNick}({e.NewFriendWxid})申请加好友"); if (!string.IsNullOrWhiteSpace(e.OldFriendWxid)) strb.Append($"邀请者:{e.OldFriendNick}({e.OldFriendWxid})."); if (Config.AcceptFriend) { string result = e.Client.AgreeAddMe(e.Token); strb.Append($"自动接受申请"); } this.OnLog(strb.ToString()); } private void SDK_WXNewFriendEvent(object sender, Chat.Framework.WXSdk.Events.WXNewFriend e) { try { if (!string.IsNullOrWhiteSpace(Config.NewFriendMess)) e.Client.SendMessage(e.Friend.UserName, Config.NewFriendMess.Replace("[昵称]", e.Friend.NickName).Replace("[账号]", e.Friend.UserName)); } catch (Exception ex) { this.OnLog(ex.Message); } } public override void ShowForm() { try { if (mainForm == null || mainForm.IsDisposed) { mainForm = new MainForm(); mainForm.Show(); } mainForm.TopMost = true; mainForm.TopMost = false; } catch (Exception ex) { this.OnLog(ex.Message); } } public override void Stop() { try { if (mainForm != null) { mainForm.CloseForm(); mainForm = null; } } catch (Exception ex) { this.OnLog(ex.Message); } } private void SDK_ReciveIMEvent(object sender, ReciveIMEvent e) { try { //过滤表情xml和卡片xml if ((e.Message.ToLower().Contains(@"(); #region 正常口令 var regs1 = Regex.Matches(_mess, "[^A-Za-z0-9]?([A-Za-z0-9]{11})[^A-Za-z0-9]?"); foreach (Match item in regs1) { if (item.Success) { var tkl = item.Groups[1].Value; if (Regex.IsMatch(tkl, @"(\d{11})")) continue; flag = true; break; } } #endregion if (!flag) { var tklreg = TbAnalysis.GetTklReg(); flag = Regex.IsMatch(e.Message, tklreg, RegexOptions.IgnoreCase); } if (!flag) { flag = Regex.IsMatch(e.Message, @"(yukhj.com|m.tb.cn|m.yeeoq.top|m.uqlsi|m.rijni|m.gkqmj|m.mulwt|uland\\.taobao\\.com|sjtm.me|aa5d.com|d11a.com|f61[a-z].com|92db.com|yqt.so|e22a.com|f61b.com|detail.m.tmall.hk|k.83jie.com|ewqcxz.com|items.alitrip.com|tmqd.me|detail.tmall.hk|url.cn|taobao.com|mashort.cn|tmall.com|tb.cn|detail.yao.95095.com|laiwang.com|dwz.cn|juhuasuan.com|detail.m.tmall.com|zmnxbc.com|s.click.taobao|detail.liangxinyao.com|m.tb.cn)", RegexOptions.IgnoreCase); } if (!flag) { flag = Regex.IsMatch(e.Message.Trim(), @"^找.+", RegexOptions.IgnoreCase); } if (flag) { var db = ApiClient.GetSession(); var data = db.FindSingle("rid = @rid", new { rid = e.RobotInfo.id }); if (data == null || string.IsNullOrWhiteSpace(data.invitecode)) return; var mess = Send(e.Message, data.invitecode, e.GetMemberinfo().username); if (!string.IsNullOrWhiteSpace(mess)) { var jObj = JObject.Parse(mess); if (jObj["code"] == null || (int)jObj["code"] != 200) throw new Exception(mess); var data1 = jObj["data"]; var cardTitle = data1["cardTitle"].ToString();//卡片标题 var title = data1["title"].ToString();//标题 var description = data1["description"].ToString();//描述 var picUrl = data1["picUrl"].ToString();//图片 var url = data1["url"].ToString();//卡片链接 var shortUrl = data1["shortUrl"].ToString();//文案短链接 var hb = (decimal)data1["lijin"];//红包 var yhq = (decimal)data1["coupon"];//优惠券 var xdj = (decimal)data1["priceAfterCoupon"];//下单价 var jy = hb + yhq;//节约 //{"code":200,"msg":"success","data":{"title":"预估购买奖励:0.53元,优惠券:1元,下单价:6.9元","description":"包邮 漫花 抽纸 绒触感5层80抽/4包/20包/30包家用卫生纸纸巾","picUrl":"https://img.alicdn.com/bao/uploaded/i4/6000000002192/O1CN012ZcrnM1S3yuYZVHF5_!!6000000002192-0-picassoopen.jpg","url":"https://52tlj.com:8095/m/#/pages/goods/detail?id=652169220578\u0026spm=uehOAiI7g.0.-1\u0026wxid=wxid_hlgorn846ihp22"}} var m = string.Empty; switch (Config.SendType) { case SendTemplateType.卡片: m = Config.CardText.Replace("[标题]", cardTitle).Replace("[下单地址]", url); break; case SendTemplateType.图文: m = Config.ImageText; break; case SendTemplateType.自定义: m = Config.CustomContent; break; default: break; } e.SendMessage(m.Replace("[商品图片]", picUrl) .Replace("[标题]", title) .Replace("[下单价]", xdj.ToString("0.00")) .Replace("[优惠券]", yhq.ToString("0.00")) .Replace("[红包金额]", hb.ToString("0.00")) .Replace("[文案描述]", description) .Replace("[下单地址]", shortUrl) .Replace("[合计节约]", jy.ToString("0.00")) ); } } } catch (Exception ex) { this.OnLog($"{ex.Message}"); } } catch (Exception ex) { } } private string Send(string message, string inviteCode, string wxid) { StringBuilder strb = new StringBuilder("Web接口请求:"); try { strb.AppendLine($"内容:{message}"); message = HttpHelper.URLEncode(message, Encoding.UTF8); var t = HttpExtend.GetTimeStamp(); var sig = getSign(message, inviteCode, wxid, t); var postData = @"{""appKey"":""" + appKey + @""",""content"":""" + message + @""",""inviteCode"":""" + inviteCode + @""",""sign"":""" + sig + @""",""t"":" + t + @",""wxId"":""" + wxid + @"""}"; HttpHelper _http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "https://www.52tlj.com/cms/v1/api/fl/transfer", Method = "POST", IsToLower = false, Cookie = string.Empty, Referer = "", Postdata = postData, Timeout = 5000, ReadWriteTimeout = 5000, UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0", ContentType = "application/json", Allowautoredirect = false }; //item.SetProxyipCDN(); var result = _http.GetHtml(item); var html = result.Html; strb.AppendLine($"返回数据:{html}"); return html; } catch (Exception ex) { strb.AppendLine($"异常:{ex.Message}"); } finally { LogHelper.GetSingleObj().Debug("", strb.ToString()); } return string.Empty; } private string appKey = "qnly"; private string appSec = "01ae2596ca8e9349"; private string getSign(string message, string inviteCode, string wxid, string t) { try { //http://39.103.223.90:18095/cms/v1/api/fl/transfer //appKey: test // appSec:1234 //appkey+content+inviteCode+t+wxid+appsec var md5 = CsharpHttpHelper.HttpHelper.ToMD5(appKey + message + inviteCode + t + wxid + appSec).ToLower(); return md5; } catch (Exception ex) { } return string.Empty; } } }