688 lines
24 KiB
C#
688 lines
24 KiB
C#
|
||
using Chat.Framework.PCRobotSDK;
|
||
using Chat.Framework.WXSdk.Events;
|
||
using Chat.Framework.WXSdk.IPAD;
|
||
using Google.Protobuf;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using WechatProto;
|
||
|
||
namespace Chat.Framework.WXSdk.Implement
|
||
{
|
||
/// <summary>
|
||
/// 朋友圈评论类型
|
||
/// </summary>
|
||
public enum CircleCommentType : int
|
||
{
|
||
评论 = 2,
|
||
点赞 = 1
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信类型
|
||
/// </summary>
|
||
public enum WeixinType
|
||
{
|
||
Grpc微信 = 1,
|
||
Hook微信 = 2,
|
||
QYHook微信 = 3
|
||
}
|
||
|
||
/// <summary>
|
||
/// 协议类型
|
||
/// </summary>
|
||
public enum LoginDeviceType : int
|
||
{
|
||
未知 = 0,
|
||
Ipad = 1,
|
||
Mac = 3,
|
||
Windows = 5,
|
||
QQBrowser = 7
|
||
}
|
||
|
||
/// <summary>
|
||
/// 协议操作类型
|
||
/// </summary>
|
||
public enum EditContactsType
|
||
{
|
||
保存通讯录 = 2051,
|
||
取消保存通讯录 = 2,
|
||
|
||
星标 = 71,
|
||
取消星标 = 7,
|
||
|
||
备注 = 7,
|
||
|
||
拉黑 = 15,
|
||
取消拉黑 = 7,
|
||
|
||
置顶 = 2055,
|
||
取消置顶 = 7
|
||
}
|
||
|
||
/// <summary>
|
||
/// 标签
|
||
/// </summary>
|
||
public class Lable
|
||
{
|
||
/// <summary>
|
||
/// 标签名称
|
||
/// </summary>
|
||
public string LabelName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 标签ID
|
||
/// </summary>
|
||
public string LabelID { get; set; }
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 微信基础用户
|
||
/// </summary>
|
||
public class WeixinBaseUser
|
||
{
|
||
|
||
/// <summary>
|
||
/// 机器人登录时间
|
||
/// </summary>
|
||
public DateTime LoginTime { get; private set; }
|
||
private long _uin;
|
||
private string _nick;
|
||
private string _username;
|
||
/// <summary>
|
||
/// Uin
|
||
/// </summary>
|
||
public long Uin
|
||
{
|
||
get
|
||
{
|
||
if (this.User != null) return this.User.Uin;
|
||
else return _uin;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机器人昵称
|
||
/// </summary>
|
||
public string Nick
|
||
{
|
||
get
|
||
{
|
||
if (this.User != null) return Encoding.UTF8.GetString(this.User.Nickname.ToArray());
|
||
else return _nick;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机器人微信id
|
||
/// </summary>
|
||
public string Username
|
||
{
|
||
get
|
||
{
|
||
if (this.User != null) return this.User.Userame;
|
||
else return _username;
|
||
}
|
||
}
|
||
|
||
public string Data
|
||
{
|
||
get
|
||
{
|
||
var _data = this.User.ToByteArray();
|
||
return Util.HexToStr(_data);
|
||
}
|
||
}
|
||
|
||
internal User User { get; set; }
|
||
|
||
public WeixinBaseUser()
|
||
{
|
||
this.LoginTime = DateTime.Now;
|
||
|
||
}
|
||
public WeixinBaseUser(User user)
|
||
{
|
||
this.User = user;
|
||
this.LoginTime = DateTime.Now;
|
||
}
|
||
public WeixinBaseUser(string data)
|
||
{
|
||
var temp = Util.StrToHex(data);
|
||
this.User = new User();
|
||
this.User.MergeFrom(temp);
|
||
this.LoginTime = DateTime.Now;
|
||
}
|
||
|
||
public WeixinBaseUser(string username, string nick, long uin = -1)
|
||
{
|
||
this._username = username;
|
||
this._uin = uin;
|
||
this._nick = nick;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信基类
|
||
/// </summary>
|
||
public class WeixinBase : IDisposable
|
||
{
|
||
/// <summary>
|
||
/// 好友列表
|
||
/// </summary>
|
||
public Dictionary<string, Friend> Friends { get; internal set; }
|
||
|
||
/// <summary>
|
||
/// 用户
|
||
/// </summary>
|
||
public WeixinBaseUser User { get; set; }
|
||
|
||
/// <summary>
|
||
/// 微信类型
|
||
/// </summary>
|
||
public WeixinType WeixinType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 微信号
|
||
/// </summary>
|
||
public string WeixinHao { get; internal set; }
|
||
|
||
/// <summary>
|
||
/// 启动微信
|
||
/// </summary>
|
||
public virtual void ShowLogin() { }
|
||
|
||
/// <summary>
|
||
/// 退出微信
|
||
/// </summary>
|
||
public virtual void LoginOut() { }
|
||
|
||
/// <summary>
|
||
/// 退出微信
|
||
/// </summary>
|
||
/// <param name="message">退出说明</param>
|
||
public virtual void LoginOut(string message) { }
|
||
|
||
/// <summary>
|
||
/// 微信状态
|
||
/// </summary>
|
||
public WxStatus Status { get; set; }
|
||
|
||
/// <summary>
|
||
/// 微信状态改变
|
||
/// </summary>
|
||
/// <param name="status">状态</param>
|
||
/// <param name="e">微信修改状态事件,可为空</param>
|
||
/// <param name="is_next">无用</param>
|
||
public virtual void ChangeStatus(WxStatus status, WXChangeStatus e = null, bool is_next = true)
|
||
{
|
||
if (this.Status == status) return;
|
||
|
||
this.Status = status;
|
||
if (e == null)
|
||
{
|
||
ChatClient.Events.OnEvent(new WXChangeStatus(this));
|
||
}
|
||
else
|
||
{
|
||
e.Status = status;
|
||
ChatClient.Events.OnEvent(e);
|
||
}
|
||
|
||
if (this.Status == WxStatus.在线)
|
||
{
|
||
LogHelper.GetSingleObj().Debug("", $"微信状态改变:{this.User.Nick}({this.WeixinHao})");
|
||
ChatClient.UpdateWXClient(this);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 重新连接微信
|
||
/// </summary>
|
||
/// <param name="nextLogin">连接数次</param>
|
||
public virtual void ResetConnection(int next = 3) { }
|
||
|
||
/// <summary>
|
||
/// 获得联系人信息
|
||
/// </summary>
|
||
/// <param name="wxid">用户账号</param>
|
||
/// <param name="refresh">时候刷新</param>
|
||
/// <returns></returns>
|
||
public virtual Friend GetContact(string wxid, bool refresh = false) { return null; }
|
||
|
||
/// <summary>
|
||
/// 发送消息
|
||
/// </summary>
|
||
/// <param name="username">接收者账号</param>
|
||
/// <param name="message">发送的消息</param>
|
||
/// <param name="atUsername">艾特用户</param>
|
||
public virtual Task<bool> SendMessage(string username, string message, string atUsername = "") { return null; }
|
||
|
||
/// <summary>
|
||
/// 发送小程序
|
||
/// </summary>
|
||
/// <param name="username">发送给谁</param>
|
||
/// <param name="ghid">小程序ID</param>
|
||
/// <param name="wxid">所有者wxid</param>
|
||
/// <param name="name">小程序名称</param>
|
||
/// <param name="title">小程序分享的标题</param>
|
||
/// <param name="enterpoint">入口点</param>
|
||
/// <param name="headimg">小程序图标</param>
|
||
/// <param name="image_key1">缩略图key1</param>
|
||
/// <param name="image_key2">缩略图key2</param>
|
||
/// <param name="image_key3">缩略图key3</param>
|
||
/// <param name="image_size">缩略图大小</param>
|
||
public virtual void SendProgramMessage(string username, string ghid, string wxid, string name, string title, string enterpoint, string headimg, string image_key1, string image_key2, string image_key3, string image_size) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
|
||
/// <summary>
|
||
/// 刷新通讯录信息(获取好友列表)
|
||
/// </summary>
|
||
public virtual void RefreshContact(Action<WXClientImpl_IPAD> method = null) { }
|
||
|
||
/// <summary>
|
||
/// 同意添加我为好友
|
||
/// </summary>
|
||
/// <param name="token">收到添加好友信息token信息</param>
|
||
/// <returns></returns>
|
||
public virtual string AgreeAddMe(string token) { return string.Empty; }
|
||
|
||
/// <summary>
|
||
/// 发送图片
|
||
/// </summary>
|
||
/// <param name="img">图片byte[]</param>
|
||
/// <param name="username">接收者账号</param>
|
||
public virtual void SendImage(byte[] img, string username) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 分析事件
|
||
/// </summary>
|
||
/// <param name="obj"></param>
|
||
public virtual void Receive(object obj) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 发送卡片消息
|
||
/// </summary>
|
||
/// <param name="username">接收者账号</param>
|
||
/// <param name="friendwxid">卡片用户账号</param>
|
||
public virtual void SendCard(string username, string friendwxid) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 发送Xml卡片消息
|
||
/// </summary>
|
||
/// <param name="username"></param>
|
||
/// <param name="xml"></param>
|
||
public virtual void SendCardXml(string username, string xml) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 获取群成员,不支持pc
|
||
/// </summary>
|
||
/// <param name="groupid">群id</param>
|
||
/// <param name="flag">是否刷新</param>
|
||
/// <returns></returns>
|
||
public virtual GroupMember[] GetMembers(string groupid, bool flag = false) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 获取群用户信息
|
||
/// </summary>
|
||
/// <param name="groupid">群</param>
|
||
/// <param name="wxid">用户账号</param>
|
||
/// <returns></returns>
|
||
public virtual GroupMember GetMember(string groupid, string wxid) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 获取群用户信息带刷新
|
||
/// </summary>
|
||
/// <param name="groupid">群</param>
|
||
/// <param name="wxid">用户账号</param>
|
||
/// <param name="flush">刷新</param>
|
||
/// <returns></returns>
|
||
public virtual GroupMember GetMember(string groupid, string wxid, bool flush = false) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 发送图片
|
||
/// </summary>
|
||
/// <param name="username">接收者账号</param>
|
||
/// <param name="address">图片地址</param>
|
||
public virtual void SendImage(string username, string address) { throw new Exception("本协议暂时不支持该方法"); }
|
||
/// <summary>
|
||
/// 搜索关键词
|
||
/// </summary>
|
||
/// <param name="keyword">关键词</param>
|
||
/// <returns></returns>
|
||
public virtual Dictionary<string, object> SerchKeyword(string keyword) { throw new Exception("本协议暂时不支持该方法"); }
|
||
/// <summary>
|
||
/// 关注公众号
|
||
/// </summary>
|
||
/// <param name="username">公众号账号</param>
|
||
/// <returns></returns>
|
||
public virtual bool FocusWechat(string username) { throw new Exception("本协议暂时不支持该方法"); }
|
||
/// <summary>
|
||
/// 发送语音
|
||
/// </summary>
|
||
/// <param name="username">接收者账号</param>
|
||
/// <param name="url">连接</param>
|
||
public virtual void SendVoice(string username, string url) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 获得联系人二维码
|
||
/// </summary>
|
||
/// <param name="Refresh">刷新</param>
|
||
/// <returns></returns>
|
||
public virtual Bitmap GetRobotQRcode(bool Refresh = false) { return null; }
|
||
|
||
/// <summary>
|
||
/// 验证支付
|
||
/// </summary>
|
||
/// <param name="code">code</param>
|
||
/// <param name="isHongbao">isHongbao</param>
|
||
/// <param name="reqKey">reqKey</param>
|
||
/// <param name="bank">bank</param>
|
||
/// <param name="token">token</param>
|
||
/// <param name="pass">pass</param>
|
||
/// <returns></returns>
|
||
public virtual void SnsVerify(string code, bool isHongbao, string reqKey, BankCar bank, string token, string pass) { throw new Exception("本协议暂时不支持该方法"); }
|
||
|
||
/// <summary>
|
||
/// 下载图片
|
||
/// </summary>
|
||
/// <param name="msgid">消息id</param>
|
||
/// <param name="fromUsername">账号</param>
|
||
/// <param name="datatotalength">长度</param>
|
||
/// <returns></returns>
|
||
public virtual string DownlowdImage(int msgid, string fromUsername, int datatotalength) { return string.Empty; }
|
||
|
||
/// <summary>
|
||
/// 秒发CDN消息
|
||
/// </summary>
|
||
/// <param name="tousername">接收者账号</param>
|
||
/// <param name="cdnurl">cdnurl</param>
|
||
/// <param name="aeskey">aeskey</param>
|
||
/// <param name="type">type</param>
|
||
public virtual void SendCDNInfo(string tousername, string cdnurl, string aeskey, CDNType type) { }
|
||
|
||
/// <summary>
|
||
/// 发送CDN图片
|
||
/// </summary>
|
||
/// <param name="tousername">接收者账号</param>
|
||
/// <param name="data">图片cdn</param>
|
||
public virtual void SendCDNImage(string tousername, string data) { }
|
||
|
||
/// <summary>
|
||
/// 发送CDN视频
|
||
/// </summary>
|
||
/// <param name="tousername">接收者账号</param>
|
||
/// <param name="cdnurl">cdnurl</param>
|
||
/// <param name="aeskey">aeskey</param>
|
||
public virtual void SendCDNVideo(string tousername, string cdnurl, string aeskey) { }
|
||
|
||
/// <summary>
|
||
/// 发送红包
|
||
/// </summary>
|
||
/// <param name="toUsername">接收者账号</param>
|
||
/// <param name="content">content</param>
|
||
/// <param name="TotalAmount">TotalAmount</param>
|
||
/// <param name="password">password</param>
|
||
/// <param name="count">count</param>
|
||
/// <param name="type">type</param>
|
||
/// <param name="bank">bank</param>
|
||
/// <param name="param">param</param>
|
||
/// <returns></returns>
|
||
public virtual string SendPay(string toUsername, string content, int TotalAmount, string password, int count, PayType type, BankCar bank = null, Dictionary<string, object> param = null) { return string.Empty; }
|
||
|
||
/// <summary>
|
||
/// 获得好友列表
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <returns></returns>
|
||
public virtual List<T> FindFriends<T>()
|
||
{
|
||
return null;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取朋友圈
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public virtual List<Dictionary<string, object>> FindCircles() { throw new Exception("此协议不支持,FindCircles!"); }
|
||
|
||
/// <summary>
|
||
/// 获取群列表(不包含群成员)
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public virtual List<Friend> GetGroupsNotInMember() { return null; }
|
||
|
||
/// <summary>
|
||
/// 检测URL在微信中是否有效
|
||
/// </summary>
|
||
/// <param name="url">url</param>
|
||
/// <returns>0可以访问, -x 负值代表不能访问</returns>
|
||
public virtual bool CheckUrl(string url) { throw new Exception("此协议不支持,CheckUrl!"); }
|
||
|
||
/// <summary>
|
||
/// 打开内置浏览器
|
||
/// </summary>
|
||
/// <param name="url">url</param>
|
||
/// <returns></returns>
|
||
public virtual void OpenUrl(string url) { throw new Exception("此协议不支持,OpenUrl!"); }
|
||
|
||
/// <summary>
|
||
/// 清理历史聊天记录
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public virtual void ClearChatHistoryMsg() { throw new Exception("此协议不支持,ClearChatHistoryMsg!"); }
|
||
|
||
/// <summary>
|
||
/// 设置会话已读
|
||
/// </summary>
|
||
public virtual void SetSessionReadedMsg(string wxid) { throw new Exception("此协议不支持,SetSessionReadedMsg!"); }
|
||
|
||
/// <summary>
|
||
/// 修改群聊名称
|
||
/// </summary>
|
||
/// <param name="new_name">新的群名</param>
|
||
/// <param name="groupId">群id</param>
|
||
public virtual void SetRoomName(string new_name, string groupId) { throw new Exception("此协议不支持,SetRoomName!"); }
|
||
|
||
/// <summary>
|
||
/// 修改群公告(可用于@全体)
|
||
/// </summary>
|
||
/// <param name="notice">新公告</param>
|
||
/// <param name="groupId">群聊wxid</param>
|
||
public virtual void SetRoomNotice(string notice, string groupId) { throw new Exception("此协议不支持,SetRoomNotice!"); }
|
||
|
||
/// <summary>
|
||
/// 设置自己在群中昵称
|
||
/// </summary>
|
||
/// <param name="nickname">要设置的昵称</param>
|
||
/// <param name="groupId">需要设置的群id</param>
|
||
public virtual void ModRoomMyName(string nickname, string groupId) { throw new Exception("此协议不支持,ModRoomMyName!"); }
|
||
|
||
/// <summary>
|
||
/// 设置是否显示群成员昵称
|
||
/// </summary>
|
||
/// <param name="status">true为开启</param>
|
||
/// <param name="groupId">要显示得到群</param>
|
||
public virtual void SetRoomShowMemeberName(bool status, string groupId) { throw new Exception("此协议不支持,SetRoomShowMemeberName!"); }
|
||
|
||
/// <summary>
|
||
/// 修改群聊名称
|
||
/// </summary>
|
||
/// <param name="newnick">新名称</param>
|
||
/// <param name="groupId">群号</param>
|
||
public virtual void ModRoomName(string newnick, string groupId) { throw new Exception("此协议不支持,ModRoomName!"); }
|
||
|
||
/// <summary>
|
||
/// 是否消息免打扰
|
||
/// </summary>
|
||
/// <param name="status">true为开启</param>
|
||
/// <param name="wxid">wxid</param>
|
||
public virtual void SetRecvNotify(bool status, string wxid) { throw new Exception("此协议不支持,SetRecvNotify!"); }
|
||
|
||
/// <summary>
|
||
/// 创建群聊
|
||
/// </summary>
|
||
/// <param name="members">用户账号用英文逗号分隔</param>
|
||
public virtual string CreateChatRoom(string members) { throw new Exception("此协议不支持,CreateChatRoom!"); }
|
||
|
||
/// <summary>
|
||
/// 创建群
|
||
/// </summary>
|
||
/// <param name="wxids">用户账号3个或者以上</param>
|
||
public virtual string CreateChatRoom(string[] wxids) { throw new Exception("此协议不支持,CreateChatRoom!"); }
|
||
|
||
/// <summary>
|
||
/// 添加群用户
|
||
/// </summary>
|
||
/// <param name="groupid">群号</param>
|
||
/// <param name="members">用户wxid多个用户逗号分隔</param>
|
||
public virtual void AddChatRoomMember(string groupid, string members) { throw new Exception("此协议不支持,AddChatRoomMember!"); }
|
||
|
||
/// <summary>
|
||
/// 添加群用户_40人以下
|
||
/// </summary>
|
||
/// <param name="groupid">群id</param>
|
||
/// <param name="members">用户账号多个用英文逗号分隔</param>
|
||
public virtual void AddChatRoomMember_40Down(string groupid, string members) { throw new Exception("此协议不支持,AddChatRoomMember!"); }
|
||
|
||
/// <summary>
|
||
/// 关注公众号
|
||
/// </summary>
|
||
/// <param name="wxid">公众号wxid</param>
|
||
public virtual void AddPublicUser(string wxid) { throw new Exception("此协议不支持,AddPublicUser!"); }
|
||
|
||
/// <summary>
|
||
/// 开启/关闭防撤回功能
|
||
/// </summary>
|
||
/// <param name="status">1是开启防撤回,0是关闭</param>
|
||
public virtual void SetDisableRevoke(bool status) { throw new Exception("此协议不支持,SetDisableRevoke!"); }
|
||
|
||
/// <summary>
|
||
/// 发表朋友圈
|
||
/// </summary>
|
||
/// <param name="msg">内容-需要携带至少一张图片,例如:[图片=路径]</param>
|
||
/// <returns></returns>
|
||
public virtual string SendCircle(string msg) { throw new Exception("此协议不支持,SendCircle!"); }
|
||
/// <summary>
|
||
/// 发表评论
|
||
/// </summary>
|
||
/// <param name="username">发送的微信ID</param>
|
||
/// <param name="circleId">朋友圈的ID</param>
|
||
/// <param name="content">发送的内容</param>
|
||
/// <returns></returns>
|
||
public virtual void SendCircleComment(string username, string circleId, string content) { throw new Exception("此协议不支持,SendCircleComment!"); }
|
||
/// <summary>
|
||
/// 点赞
|
||
/// </summary>
|
||
/// <param name="username">账号</param>
|
||
/// <param name="circleId">朋友圈id</param>
|
||
public virtual void SendCirclePraise(string username, string circleId) { throw new Exception("此协议不支持,SendCirclePraise!"); }
|
||
/// <summary>
|
||
/// 获取朋友圈
|
||
/// </summary>
|
||
/// <param name="username">微信ID</param>
|
||
/// <param name="firstPageMd5">页码</param>
|
||
/// <param name="MaxId">页码ID</param>
|
||
/// <returns></returns>
|
||
public virtual List<Dictionary<string, object>> FindCircle(string username, string firstPageMd5 = "", long MaxId = 0) { throw new Exception("此协议不支持,FindCircle!"); }
|
||
|
||
/// <summary>
|
||
/// 自动授权登录小程序
|
||
/// </summary>
|
||
/// <param name="appid">appid</param>
|
||
public virtual string AutoAuthMiniAPPLogin(string appid) { throw new Exception("此协议不支持,AutoAuthMiniAPPLogin!"); }
|
||
|
||
private static LogHelper log = new LogHelper();
|
||
/// <summary>
|
||
/// 写出日志
|
||
/// </summary>
|
||
/// <param name="msg">内容</param>
|
||
/// <param name="debug">是否为debug</param>
|
||
public void WriteLog(string msg, bool debug = false)
|
||
{
|
||
ChatClient.Events.OnEvent(new WXWriteLog(this) { IsDebug = debug, Message = msg });
|
||
}
|
||
|
||
/// <summary>
|
||
/// 编辑用户信息
|
||
/// </summary>
|
||
/// <param name="username">操作用户</param>
|
||
/// <param name="type">操作类型</param>
|
||
/// <param name="remark">如果Type=备注,为空表示取消备注,不为空表示备注所填写内容</param>
|
||
public virtual void EditContacts(string username, EditContactsType type, string remark = "") { }
|
||
|
||
/// <summary>
|
||
/// 删除朋友
|
||
/// </summary>
|
||
/// <param name="username">用户wxid</param>
|
||
/// <returns></returns>
|
||
public virtual string DeleteFriend(string username) { return null; }
|
||
|
||
/// <summary>
|
||
/// 邀请入群
|
||
/// </summary>
|
||
/// <param name="username">用户wxid</param>
|
||
/// <param name="groupId">群id</param>
|
||
/// <returns></returns>
|
||
public virtual string InviteIntoGroup(string username, string groupId) { return null; }
|
||
|
||
/// <summary>
|
||
/// 删除群用户
|
||
/// </summary>
|
||
/// <param name="username">用户账号</param>
|
||
/// <param name="groupId">群id</param>
|
||
/// <returns></returns>
|
||
public virtual string DeleteGroupMember(string username, string groupId) { return null; }
|
||
|
||
public void Dispose()
|
||
{
|
||
|
||
}
|
||
|
||
|
||
public virtual Dictionary<string, object> GetBalance() { return null; }
|
||
|
||
/// <summary>
|
||
/// 领取转账
|
||
/// </summary>
|
||
/// <param name="Invalidtime">收到转账中的Invalidtime</param>
|
||
/// <param name="Transferid">收到转账中的Transferid</param>
|
||
/// <param name="FromUsername">收到转账中的FromUsername</param>
|
||
/// <returns></returns>
|
||
public virtual int TenPayTransferConfirm(string Invalidtime, string Transferid, string FromUsername) { return -1; }
|
||
|
||
/// <summary>
|
||
/// 获取标签组
|
||
/// </summary>
|
||
/// <param name="refresh">是否刷新标签组</param>
|
||
/// <returns></returns>
|
||
public virtual List<Lable> GetLabelList(bool refresh = false) { throw new Exception("此协议不支持,GetTagList!"); }
|
||
|
||
/// <summary>
|
||
/// 添加标签
|
||
/// </summary>
|
||
/// <param name="TagName">标签名称</param>
|
||
/// <returns></returns>
|
||
public virtual bool AddLabel(string TagName) { throw new Exception("此协议不支持,AddTag!"); }
|
||
|
||
/// <summary>
|
||
/// 批量修改标签
|
||
/// </summary>
|
||
/// <param name="Users">用户信息</param>
|
||
/// <param name="Lable">标签组</param>
|
||
/// <returns></returns>
|
||
public virtual bool EditUserLabel(string[] Users, List<Lable> Lable) { throw new Exception("此协议不支持,ModifyUserTag!"); }
|
||
|
||
///// <summary>
|
||
///// 获取PC微信登录二维码
|
||
///// </summary>
|
||
///// <returns></returns>
|
||
//public virtual RemoteLoginCode GetLoginCode() { throw new Exception("此协议不支持,GetLoginCode!"); }
|
||
}
|
||
}
|