using System; using System.Collections.Generic; using System.IO; using System.Text; using WeChatIn; using WeChatIn.Entity; using WeChatIn.Messages; using ZTImage.Log; namespace RichCreator.Server.Providers { /// /// 微信提供 /// public class WechatProvider { private WechatProvider() { } /// /// 微信客户端 /// private WeChatClient client; private bool isLogin=false; private WeChatUser me; /// /// 向微信发送消息 /// /// 微信备注名 /// 内容 public void SendMessage(string user, string content) { if (!isLogin) { return; } WeChatUser wuser = this.client.GetUserByRemarkName(user); if (user == null) { return; } this.SendMessage(wuser.UserName, content); } /// /// 登陆微信 /// public void LoginWechat() { LoginWechat(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "qrcode.png")); } /// /// 登陆微信 /// /// public void LoginWechat(string qrcodeSaveDir) { this.client = new WeChatClient(); this.client.OnLogined = (c) => { Trace.Info("login success,concat:" + c.Contacts.Count + ",nick:" + c.Me.NickName + ",username:" + c.Me.UserName); isLogin = true; this.client.OnReceive = OnReceiveMessage; me = this.client.GetUserByRemarkName("xiaozhuan"); }; this.client.Start(qrcodeSaveDir); } /// /// 收到消息回调 /// /// private void OnReceiveMessage(Message msg) { if (me == null) { return; } if (msg.From == client.Me.UserName) { return; } if (msg.MessageType==MessageType.Text&&msg.From == me.UserName) { //来自小砖,执行命令 ExecuteCommand(msg.Content); return; } string content = string.Empty; string showName = client.GetUserByUserName(msg.From).ShowName; if (msg.MessageType == MessageType.Text) { content = $"收到“{showName}”的消息,{msg.Content}"; } else { content = $"收到“{showName}”的消息,消息类型:{msg.MessageType.ToString()}"; } client.SendMessage(me.UserName, content); } /// /// 执行命令 /// /// private void ExecuteCommand(string command) { Trace.Info($"命令:{command}"); } #region singleton private static WechatProvider instance; private static object lockHelper = new object(); public static WechatProvider Instance { get { if (instance == null) { lock (lockHelper) { if (instance == null) { instance = new WechatProvider(); } } } return instance; } } #endregion } }