old_flsystem/应用/MessageForwarder/Class1.cs

150 lines
5.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Api.Framework;
using Api.Framework.SDK;
using Chat.Framework;
using Chat.Framework.WXSdk.Implement;
using MessageForwarder.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
namespace MessageForwarder
{
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
#endregion
Config = this.ReadConfig<Config>();
SDK.ReciveIMEvent += SDK_ReciveIMEvent;
}
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 static string _MessMD5 = string.Empty;
private void SDK_ReciveIMEvent(object sender, ReciveIMEvent e)
{
try
{
if (string.IsNullOrWhiteSpace(e.Groupid)) return;
if (e.Groupid != Config.ClusterId) return;
if (e.Username != Config.ListeningAccount) return;
var mess_MD5 = Api.Framework.Tools.Util.GetMd5_32byte(e.Message);
if (_MessMD5 != mess_MD5)
{
_MessMD5 = mess_MD5;
var result = CsharpHttpHelper.HttpExtend.JsonToDictionary(Class1.Config.Data);
if (result == null) return;
var weixinBases = Chat.Framework.ChatClient.WXClient.Values.ToList();
Parallel.ForEach(result.Keys, (item) =>
{
try
{
var wx = weixinBases.FirstOrDefault(f => f.WeixinHao == item && f.WeixinType == Chat.Framework.WXSdk.Implement.WeixinType.Grpc微信 && f.Status == Chat.Framework.WXSdk.WxStatus.线);
if (wx != null)
{
var groupids = result[item].ToString().Replace("", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList();
for (int i = 0; i < groupids.Count; i++)
{
var mess = e.Message;
var reg = Regex.Match(e.Message, @"\[图片=(?<图片地址>[^\]]+)\]");
if (reg.Success)
{
var imagePath = reg.Groups["图片地址"].Value;
var MD5Hash = FileTools.GetMD5Hash(imagePath);
if (ChatClient.ImageCDNs.ContainsKey(MD5Hash))
{
var obj = ChatClient.ImageCDNs[MD5Hash];
string aeskey = obj.GetType().GetProperty("aeskey").GetValue(obj).ToString();
string cdnurl = obj.GetType().GetProperty("cdnurl").GetValue(obj).ToString();
var ipad = e.Sender as WXClientImpl_IPAD;
if (ipad != null)
{
ipad.SendCDNInfo(groupids[i], cdnurl, aeskey, Chat.Framework.WXSdk.IPAD.CDNType.);
Thread.Sleep(500);
continue;
}
}
}
wx.SendMessage(groupids[i], mess);
Thread.Sleep(500);
}
}
}
catch (Exception ex)
{
this.OnLog($"微信:{item} - {ex.Message}");
}
});
}
}
catch (Exception ex)
{
this.OnLog(ex.Message);
}
}
}
}