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
}
}