old_flsystem/PCRobot/WechatApi/NMCore.cs

513 lines
22 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PCRobot.WechatApi
{
public class NMCore
{
HPSocketCS.TcpPackServer g_HPServer;
public NMCore(HPSocketCS.TcpPackServer HPServer)
{
g_HPServer = HPServer;
}
public void SendPacket(int ConnID, string Packet)
{
byte[] PackBytes = System.Text.ASCIIEncoding.Default.GetBytes(Packet.ToString());
g_HPServer.Send((IntPtr)ConnID, PackBytes, PackBytes.Length);
}
/// <summary>
/// 初始化,传输DLL调用密码,用于简单的防止DLL被盗用
/// </summary>
/// <param name="ConnID"></param>
/// <param name="PassWord"></param>
public void NM_Init(int ConnID, string PassWord)
{
JObject sendJson = new JObject();
sendJson["PackType"] = 100000;
sendJson["PassWord"] = PassWord;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_读取通讯录列表
/// </summary>
/// <param name="ConnID"></param>
public void NM_GetContactList(int ConnID)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetContactList;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_读取群员列表
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
public void NM_GetGroupMember(int ConnID, string GroupID)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetGroupMember;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_下载用户详细信息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
/// <param name="Wxid"></param>
public void NM_GetWxidInfo(int ConnID, string GroupID, string Wxid)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetWxidInfo;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_GetA8Key 微信浏览器操作
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="URL"></param>
public void NM_GetA8Key(int ConnID, string Wxid, string URL)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetA8Key;
sendJson["Type"] = 1;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["URL"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(URL));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送文本消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>3
/// <param name="AtWxidArray"></param>
/// <param name="Message"></param>
public void NM_SendTextMsg(int ConnID, string Wxid, string[] AtWxidArray, string Message)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendText;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Message"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Message));
if (AtWxidArray.Length > 0)
{
JArray AtList = new JArray();
for (int i = 0; i < AtWxidArray.Length; i++)
{
if (AtWxidArray[i] != string.Empty)
{
AtList.Add(Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(AtWxidArray[i])));
}
}
if (AtList.Count > 0) { sendJson["AtWxid"] = AtList; }
}
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送文件消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Type"></param>
/// <param name="Wxid"></param>
/// <param name="FilePath">欲发送文件的完整路径</param>
public void NM_SendFileMsg(int ConnID, int Type, string Wxid, string FilePath)
{
JObject sendJson = new JObject();
sendJson["PackType"] = Type;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["File"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(FilePath));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送名片消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="CardWxid"></param>
public void NM_SendCardMsg(int ConnID, string Wxid, string CardWxid)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendCard;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["CardWxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(CardWxid));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送地图定位消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="MapXML"></param>
public void NM_SendMapMsg(int ConnID, string Wxid, string MapXML)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendMap;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Map"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(MapXML));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送图文链接消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="XML"></param>
public void NM_SendURLMsg(int ConnID, string Wxid, string XML)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendURL;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["XML"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(XML));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送小程序 2.7及以上版本有效
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="XML"></param>
/// <param name="ShowImage"></param>
public void NM_SendWeChatApp(int ConnID, string Wxid, string XML, string ShowImage)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendWeChatApp;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["XML"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(XML));
sendJson["Image"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(ShowImage));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_撤回发出消息
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="ServerID"></param>
/// <param name="Message"></param>
public void NM_RevokeMsg(int ConnID, string Wxid, string ServerID, string Message)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_RevokeMsg;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["ServerID"] = ServerID;
sendJson["Message"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Message));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_接收的消息被撤回本地无提示
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Opt"></param>
public void NM_DesRevoke(int ConnID, bool Opt)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_DesRevoke;
sendJson["Opt"] = Opt;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_接收转账
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="Transid"></param>
/// <param name="Time"></param>
public void NM_GetMoney(int ConnID, string Wxid, string Transid, int Time)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetMoney;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Transid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Transid));
sendJson["Time"] = Time;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_通过Wxid或v1添加好友
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Type"></param>
/// <param name="AddType"></param>
/// <param name="Wxid"></param>
/// <param name="v2"></param>
/// <param name="Message"></param>
public void NM_AddFriend(int ConnID, int Type, int AddType, string Wxid, string v2, string Message)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_AddFriend;
sendJson["Type"] = Type;
sendJson["AddType"] = AddType;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["V2"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(v2));
sendJson["Message"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Message));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_通过请求消息XML通过好友请求
/// </summary>
/// <param name="ConnID"></param>
/// <param name="ApplyXML"></param>
public void NM_PassApply(int ConnID, string ApplyXML)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_PassApply;
//sendJson["XML"] = ApplyXML; 原代码,改为如下一行
sendJson["XML"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(ApplyXML));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_删除好友
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
public void NM_DelFriend(int ConnID, string Wxid)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_DelFriend;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_取消关注公众号
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GHWxid"></param>
public void NM_DelGHFriend(int ConnID, string GHWxid)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_DelGHFriend;
sendJson["GH_Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GHWxid));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_设置好友备注
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="Mark"></param>
public void NM_SetFriendMark(int ConnID, string Wxid, string Mark)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SetFriendMark;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Mark"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Mark));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_创建群聊
/// </summary>
/// <param name="ConnID"></param>
/// <param name="MemberArray"></param>
public void NM_CreateGroup(int ConnID, string[] MemberArray)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_CreateGroup;
if (MemberArray.Length > 1 && MemberArray.Length < 40)
{
JArray MemberList = new JArray();
for (int i = 0; i < MemberArray.Length; i++)
{
if (MemberArray[i] != string.Empty)
{
MemberList.Add(Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(MemberArray[i])));
}
}
if (MemberList.Count > 0)
{
sendJson["List"] = MemberList;
SendPacket(ConnID, sendJson.ToString());
}
}
}
/// <summary>
/// 功能_退出群聊
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
public void NM_QuitGroup(int ConnID, string GroupID)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_QuitGroup;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_批量拉群 - 发送邀请链接或直接拉入
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Type"></param>
/// <param name="GroupID"></param>
/// <param name="MemberArray"></param>
public void NM_InviteToGroup(int ConnID, int Type, string GroupID, string[] MemberArray)
{
JObject sendJson = new JObject();
sendJson["PackType"] = Type;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
if (MemberArray.Length > 0 && MemberArray.Length < 40)
{
JArray MemberList = new JArray();
for (int i = 0; i < MemberArray.Length; i++)
{
if (MemberArray[i] != string.Empty)
{
MemberList.Add(Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(MemberArray[i])));
}
}
if (MemberList.Count > 0)
{
sendJson["List"] = MemberList;
SendPacket(ConnID, sendJson.ToString());
}
}
}
/// <summary>
/// 功能_批量提出群员
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
/// <param name="MemberArray"></param>
public void NM_KickGroupMember(int ConnID, string GroupID, string[] MemberArray)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_KickGroupMember;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
if (MemberArray.Length > 0 && MemberArray.Length < 40)
{
JArray MemberList = new JArray();
for (int i = 0; i < MemberArray.Length; i++)
{
if (MemberArray[i] != string.Empty)
{
MemberList.Add(Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(MemberArray[i])));
}
}
if (MemberList.Count > 0)
{
sendJson["List"] = MemberList;
SendPacket(ConnID, sendJson.ToString());
}
}
}
/// <summary>
/// 功能_修改群名称
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
/// <param name="Name"></param>
public void NM_SetGroupName(int ConnID, string GroupID, string Name)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SetGroupName;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
sendJson["Name"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Name));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 群主功能_发送群公告(@所有人)
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
/// <param name="Boss"></param>
/// <param name="Notice"></param>
public void NM_SetGroupNotice(int ConnID, string GroupID, string Boss, string Notice)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SetGroupNotice;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Boss));
sendJson["Notice"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Notice));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_设置自己的群昵称
/// </summary>
/// <param name="ConnID"></param>
/// <param name="GroupID"></param>
/// <param name="Nick"></param>
public void NM_SetMyGroupNick(int ConnID, string GroupID, string Nick)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SetMyGroupNick;
sendJson["GroupID"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(GroupID));
sendJson["Nick"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Nick));
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_获取收藏列表
/// </summary>
/// <param name="ConnID"></param>
public void NM_GetFavList(int ConnID)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetFavList;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_发送指定收藏内容
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Wxid"></param>
/// <param name="Index"></param>
public void NM_SendFavMsg(int ConnID, string Wxid, int Index)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SendFavMsg;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Index"] = Index;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_状态操作
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Type">1=免打扰 2=置顶 3=保存通讯录 4=显示群员昵称</param>
/// <param name="Wxid"></param>
/// <param name="Opt"></param>
public void NM_StateOpt(int ConnID, int Type, string Wxid, bool Opt)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_StateOpt;
sendJson["Type"] = Type;
sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid));
sendJson["Opt"] = Opt;
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_对象操作
/// </summary>
/// <param name="ConnID"></param>
/// <param name="Type"> 1= 切换聊天对象
/// 2= 设置指定Wxid消息已读(取消红点,不切换聊天对象,移动端同步)
/// 3= 一键全部已读(取消全部红点,移动端不同步) </param>
/// <param name="Wxid"></param>
public void NM_SetObject(int ConnID, int Type, string Wxid)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_SetObject;
sendJson["Type"] = Type;
if (Wxid != string.Empty)
{ sendJson["Wxid"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(Wxid)); }
SendPacket(ConnID, sendJson.ToString());
}
/// <summary>
/// 功能_下载高清大图
/// </summary>
/// <param name="ConnID"></param>
/// <param name="XML"></param>
/// <param name="SavePath"></param>
public void NM_GetImageByCDN(int ConnID, string XML, string SavePath)
{
JObject sendJson = new JObject();
sendJson["PackType"] = NMHelper.NM_GetImageByCDN;
sendJson["XML"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(XML));
sendJson["SavePath"] = Convert.ToBase64String(System.Text.UnicodeEncoding.Unicode.GetBytes(SavePath));
SendPacket(ConnID, sendJson.ToString());
}
}
}