mirror of
https://github.com/timi137137/AuroraNative.git
synced 2025-09-12 11:14:31 +00:00
03/14 Last Update
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -340,4 +340,5 @@ ASALocalRun/
|
||||
healthchecksdb
|
||||
DevIcon.*
|
||||
Test
|
||||
nuget.config
|
||||
nuget.config
|
||||
*.cd
|
@@ -62,15 +62,15 @@ namespace AuroraNative
|
||||
/// <summary>
|
||||
/// 发送私聊消息
|
||||
/// </summary>
|
||||
/// <param name="QID">接受者QQ号</param>
|
||||
/// <param name="UserID">接受者QQ号</param>
|
||||
/// <param name="Message">信息内容</param>
|
||||
/// <param name="AutoEscape">是否转义<para>默认:false</para></param>
|
||||
/// <returns>返回消息ID,错误返回-1</returns>
|
||||
public async Task<string> SendPrivateMessage(long QID, string Message, bool AutoEscape = false)
|
||||
public async Task<string> SendPrivateMessage(long UserID, string Message, bool AutoEscape = false)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "message", Message },
|
||||
{ "auto_escape", AutoEscape }
|
||||
};
|
||||
@@ -119,11 +119,11 @@ namespace AuroraNative
|
||||
/// </summary>
|
||||
/// <param name="Message">信息内容</param>
|
||||
/// <param name="MessageType">信息类型<para>私聊:private</para><para>群聊:group</para></param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="AutoEscape">是否转义<para>默认:false</para></param>
|
||||
/// <returns>错误返回-1,成功返回信息ID</returns>
|
||||
public async Task<string> SendMsg(string Message, string MessageType = null, long QID = 0, long GroupID = 0, bool AutoEscape = false)
|
||||
public async Task<string> SendMsg(string Message, string MessageType = null, long UserID = 0, long GroupID = 0, bool AutoEscape = false)
|
||||
{
|
||||
JObject Params = new JObject() {
|
||||
{ "message", Message},
|
||||
@@ -133,15 +133,15 @@ namespace AuroraNative
|
||||
switch (MessageType)
|
||||
{
|
||||
case "private":
|
||||
Params.Add("user_id", QID);
|
||||
Params.Add("user_id", UserID);
|
||||
break;
|
||||
case "group":
|
||||
Params.Add("group_id", GroupID);
|
||||
break;
|
||||
case null:
|
||||
if (QID != 0)
|
||||
if (UserID != 0)
|
||||
{
|
||||
Params.Add("user_id", QID);
|
||||
Params.Add("user_id", UserID);
|
||||
}
|
||||
else if (GroupID != 0)
|
||||
{
|
||||
@@ -199,26 +199,33 @@ namespace AuroraNative
|
||||
/// </summary>
|
||||
/// <param name="Filename">图片缓存文件名,带不带后缀你喜欢就好</param>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetImage(string Filename)
|
||||
public async Task<Dictionary<string, object>> GetImage(string Filename)
|
||||
{
|
||||
if (!Filename.Contains(".image"))
|
||||
{
|
||||
Filename += ".image";
|
||||
}
|
||||
return await SendCallObject(new BaseAPI("get_image", new JObject() { { "file", Filename } }, "GetImage:" + Utils.NowTimeSteamp()));
|
||||
|
||||
JObject Json = await SendCallObject(new BaseAPI("get_image", new JObject() { { "file", Filename } }, "GetImage:" + Utils.NowTimeSteamp()));
|
||||
|
||||
return new Dictionary<string, object>() {
|
||||
{"Size",Json.Value<int>("size")},
|
||||
{"FileName",Json.Value<string>("filename")},
|
||||
{"Url",Json.Value<string>("url")}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 群组踢人
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="RejectAddRequest">是否自动拒绝此人加群申请<para>默认:false</para></param>
|
||||
public void SetGroupKick(long GroupID, long QID, bool RejectAddRequest = false)
|
||||
public void SetGroupKick(long GroupID, long UserID, bool RejectAddRequest = false)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "group_id", GroupID },
|
||||
{ "reject_add_request", RejectAddRequest }
|
||||
};
|
||||
@@ -230,13 +237,13 @@ namespace AuroraNative
|
||||
/// 群组单人禁言
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="Duration">禁言时间,单位秒<para>默认:30分钟(1800秒)</para></param>
|
||||
public void SetGroupBan(long GroupID, long QID, int Duration = 1800)
|
||||
public void SetGroupBan(long GroupID, long UserID, int Duration = 1800)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "group_id", GroupID },
|
||||
{ "duration", Duration }
|
||||
};
|
||||
@@ -291,13 +298,13 @@ namespace AuroraNative
|
||||
/// 设置群管理员
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="Enable">是否设置为管理员<para>默认:true</para></param>
|
||||
public void SetGroupAdmin(long GroupID, long QID, bool Enable = true)
|
||||
public void SetGroupAdmin(long GroupID, long UserID, bool Enable = true)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "group_id", GroupID },
|
||||
{ "enable", Enable }
|
||||
};
|
||||
@@ -309,13 +316,13 @@ namespace AuroraNative
|
||||
/// 设置群名片
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="Card">群名片内容<para>默认:null(删除群名片)</para></param>
|
||||
public void SetGroupCard(long GroupID, long QID, string Card = null)
|
||||
public void SetGroupCard(long GroupID, long UserID, string Card = null)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "group_id", GroupID },
|
||||
{ "card", Card }
|
||||
};
|
||||
@@ -359,14 +366,14 @@ namespace AuroraNative
|
||||
/// 设置群组专属头衔
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="SpecialTitle">群名片内容<para>默认:null(删除群名片)</para></param>
|
||||
/// <param name="Duration">专属头衔有效期, 单位秒, 不过此项似乎没有效果, 可能是只有某些特殊的时间长度有效, 有待测试<para>默认:-1(永久)</para></param>
|
||||
public void SetGroupSpecialTitle(long GroupID, long QID, string SpecialTitle = null, int Duration = -1)
|
||||
public void SetGroupSpecialTitle(long GroupID, long UserID, string SpecialTitle = null, int Duration = -1)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "group_id", GroupID },
|
||||
{ "duration", Duration },
|
||||
{ "special_title", SpecialTitle }
|
||||
@@ -417,35 +424,48 @@ namespace AuroraNative
|
||||
/// 获取登录号信息
|
||||
/// </summary>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetLoginInfo()
|
||||
public async Task<Dictionary<string, object>> GetLoginInfo()
|
||||
{
|
||||
return await SendCallObject(new BaseAPI("get_login_info", null, "GetLoginInfo:" + Utils.NowTimeSteamp()));
|
||||
JObject Json = await SendCallObject(new BaseAPI("get_login_info", null, "GetLoginInfo:" + Utils.NowTimeSteamp()));
|
||||
|
||||
return new Dictionary<string, object>() {
|
||||
{"UserID",Json.Value<long>("user_id")},
|
||||
{"NickName",Json.Value<string>("nickname")}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取陌生人信息
|
||||
/// </summary>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="Cache">是否使用缓存,使用缓存响应快但是可能更新不及时<para>默认:false</para></param>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetStrangerInfo(long QID, bool Cache = false)
|
||||
public async Task<Dictionary<string, object>> GetStrangerInfo(long UserID, bool Cache = false)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "no_cache ", Cache }
|
||||
};
|
||||
|
||||
return await SendCallObject(new BaseAPI("get_stranger_info", Params, "GetStrangerInfo:" + Utils.NowTimeSteamp()));
|
||||
JObject Json = await SendCallObject(new BaseAPI("get_stranger_info", Params, "GetStrangerInfo:" + Utils.NowTimeSteamp()));
|
||||
|
||||
return new Dictionary<string, object>() {
|
||||
{"UserID",Json.Value<int>("user_id")},
|
||||
{"NickName",Json.Value<string>("nickname")},
|
||||
{"Sex",Json.Value<string>("sex")},
|
||||
{"Age",Json.Value<string>("age")},
|
||||
{"QID",Json.Value<string>("qid")}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取好友列表
|
||||
/// </summary>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetFriendList()
|
||||
public async Task<List<Friends>> GetFriendList()
|
||||
{
|
||||
return await SendCallObject(new BaseAPI("get_friend_list", null, "GetFriendList:" + Utils.NowTimeSteamp()));
|
||||
return (await SendCallArray(new BaseAPI("get_friend_list", null, "GetFriendList:" + Utils.NowTimeSteamp()))).ToObject<List<Friends>>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -478,15 +498,15 @@ namespace AuroraNative
|
||||
/// 获取群成员信息
|
||||
/// </summary>
|
||||
/// <param name="GroupID">群号</param>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <param name="Cache">是否使用缓存,使用缓存响应快但是可能更新不及时<para>默认:false</para></param>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetGroupMemberInfo(long GroupID, long QID, bool Cache = false)
|
||||
public async Task<JObject> GetGroupMemberInfo(long GroupID, long UserID, bool Cache = false)
|
||||
{
|
||||
JObject Params = new JObject
|
||||
{
|
||||
{ "group_id", GroupID },
|
||||
{ "user_id", QID },
|
||||
{ "user_id", UserID },
|
||||
{ "no_cache ", Cache }
|
||||
};
|
||||
|
||||
@@ -542,9 +562,26 @@ namespace AuroraNative
|
||||
/// 获取版本信息
|
||||
/// </summary>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetVersionInfo()
|
||||
public async Task<Dictionary<string, object>> GetVersionInfo()
|
||||
{
|
||||
return await SendCallObject(new BaseAPI("get_version_info", null, "GetVersionInfo:" + Utils.NowTimeSteamp()));
|
||||
JObject Json = await SendCallObject(new BaseAPI("get_version_info", null, "GetVersionInfo:" + Utils.NowTimeSteamp()));
|
||||
|
||||
return new Dictionary<string, object>() {
|
||||
{"AppFullName",Json.Value<string>("app_full_name")},
|
||||
{"AppName",Json.Value<string>("app_name")},
|
||||
{"AppVersion",Json.Value<string>("app_version")},
|
||||
{"CQDirectory",Json.Value<string>("coolq_directory")},
|
||||
{"CQEdition",Json.Value<string>("coolq_edition")},
|
||||
{"IsGoCqhttp",Json.Value<bool>("go-cqhttp")},
|
||||
{"PluginBuildConfiguration",Json.Value<string>("plugin_build_configuration")},
|
||||
{"PluginBuildNumber",Json.Value<string>("plugin_build_number")},
|
||||
{"PluginVersion",Json.Value<string>("plugin_version")},
|
||||
{"Protocol",Json.Value<string>("protocol")},
|
||||
{"ProtocolVersion",Json.Value<string>("protocol_version")},
|
||||
{"RuntimeOS",Json.Value<string>("runtime_os")},
|
||||
{"RuntimeVersion",Json.Value<string>("runtime_version")},
|
||||
{"Version",Json.Value<string>("version")}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -717,11 +754,11 @@ namespace AuroraNative
|
||||
/// <summary>
|
||||
/// 获取VIP信息
|
||||
/// </summary>
|
||||
/// <param name="QID">QQ号</param>
|
||||
/// <param name="UserID">QQ号</param>
|
||||
/// <returns>错误返回null,成功返回JObject</returns>
|
||||
public async Task<JObject> GetVIPInfo(long QID)
|
||||
public async Task<JObject> GetVIPInfo(long UserID)
|
||||
{
|
||||
return await SendCallObject(new BaseAPI("_get_vip_info", new JObject { { "user_id", QID } }, "GetGroupAtAllRemain:" + Utils.NowTimeSteamp()));
|
||||
return await SendCallObject(new BaseAPI("_get_vip_info", new JObject { { "user_id", UserID } }, "GetGroupAtAllRemain:" + Utils.NowTimeSteamp()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -840,8 +877,7 @@ namespace AuroraNative
|
||||
|
||||
private async Task<string> SendCallMessageID(BaseAPI Params)
|
||||
{
|
||||
WebSocket.Send(Params);
|
||||
TaskList.Add(Params.UniqueCode, "Sended");
|
||||
SendCall(Params);
|
||||
|
||||
string Result = "-1";
|
||||
await Task.Run(() => { Result = FeedbackMessageID(Params.UniqueCode); });
|
||||
@@ -850,14 +886,32 @@ namespace AuroraNative
|
||||
|
||||
private async Task<JObject> SendCallObject(BaseAPI Params)
|
||||
{
|
||||
WebSocket.Send(Params);
|
||||
TaskList.Add(Params.UniqueCode, "Sended");
|
||||
SendCall(Params);
|
||||
|
||||
JObject Result = null;
|
||||
await Task.Run(() => { Result = FeedbackObject(Params.UniqueCode); });
|
||||
return Result;
|
||||
}
|
||||
|
||||
private async Task<JArray> SendCallArray(BaseAPI Params)
|
||||
{
|
||||
SendCall(Params);
|
||||
|
||||
JArray Result = null;
|
||||
await Task.Run(() => { Result = FeedbackArray(Params.UniqueCode); });
|
||||
return Result;
|
||||
}
|
||||
|
||||
private void SendCall(BaseAPI Params)
|
||||
{
|
||||
Logger.Debug($"API调用:\n请求的接口:{Params.Action}\n请求的唯一码:{Params.UniqueCode}\n请求的参数:\n{Params.Params}");
|
||||
WebSocket.Send(Params);
|
||||
if (!TaskList.TryGetValue(Params.UniqueCode, out _))
|
||||
{
|
||||
TaskList.Add(Params.UniqueCode, "Sended");
|
||||
}
|
||||
}
|
||||
|
||||
private void SendCallVoid(BaseAPI Params)
|
||||
{
|
||||
WebSocket.Send(Params);
|
||||
@@ -889,6 +943,18 @@ namespace AuroraNative
|
||||
return null;
|
||||
}
|
||||
|
||||
private static JArray FeedbackArray(string UniqueCode)
|
||||
{
|
||||
JObject FBJson = GetFeedback(UniqueCode);
|
||||
|
||||
//判断返回
|
||||
if (FBJson["status"].ToString() == "ok")
|
||||
{
|
||||
return JArray.Parse(FBJson["data"].ToString());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static JObject GetFeedback(string UniqueCode)
|
||||
{
|
||||
JObject FBJson = new JObject();
|
||||
@@ -912,6 +978,14 @@ namespace AuroraNative
|
||||
{
|
||||
Api api = new Api(WebSocket);
|
||||
Cache.Set($"API{AppDomain.CurrentDomain.Id}", api);
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.Sleep(5000);
|
||||
if (!BaseWebSocket.IsCheckVersion)
|
||||
{
|
||||
Event.CheckVersion();
|
||||
}
|
||||
});
|
||||
return api;
|
||||
}
|
||||
catch (WebSocketException e)
|
||||
|
32
AuroraNative/Abstract/Friends.cs
Normal file
32
AuroraNative/Abstract/Friends.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AuroraNative
|
||||
{
|
||||
/// <summary>
|
||||
/// 好友 抽象类
|
||||
/// </summary>
|
||||
public sealed class Friends
|
||||
{
|
||||
#region --属性--
|
||||
|
||||
/// <summary>
|
||||
/// QQ号
|
||||
/// </summary>
|
||||
[JsonProperty(PropertyName = "user_id")]
|
||||
public long UserID;
|
||||
|
||||
/// <summary>
|
||||
/// 昵称
|
||||
/// </summary>
|
||||
[JsonProperty(PropertyName = "nickname")]
|
||||
public string NickName;
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[JsonProperty(PropertyName = "remark")]
|
||||
public string Remark;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@@ -4,6 +4,26 @@
|
||||
<name>AuroraNative</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:AuroraNative.Friends">
|
||||
<summary>
|
||||
好友 抽象类
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.Friends.UserID">
|
||||
<summary>
|
||||
QQ号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.Friends.NickName">
|
||||
<summary>
|
||||
昵称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.Friends.Remark">
|
||||
<summary>
|
||||
备注
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.Api">
|
||||
<summary>
|
||||
API 类
|
||||
@@ -29,7 +49,7 @@
|
||||
<summary>
|
||||
发送私聊消息
|
||||
</summary>
|
||||
<param name="QID">接受者QQ号</param>
|
||||
<param name="UserID">接受者QQ号</param>
|
||||
<param name="Message">信息内容</param>
|
||||
<param name="AutoEscape">是否转义<para>默认:false</para></param>
|
||||
<returns>返回消息ID,错误返回-1</returns>
|
||||
@@ -43,7 +63,7 @@
|
||||
<param name="AutoEscape">是否转义<para>默认:false</para></param>
|
||||
<returns>返回消息ID,错误返回-1</returns>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SendGroupForwardMessage(System.Int64,System.Object)">
|
||||
<member name="M:AuroraNative.Api.SendGroupForwardMessage(System.Int64,Newtonsoft.Json.Linq.JArray)">
|
||||
<summary>
|
||||
转发合并消息 - 群
|
||||
</summary>
|
||||
@@ -57,7 +77,7 @@
|
||||
</summary>
|
||||
<param name="Message">信息内容</param>
|
||||
<param name="MessageType">信息类型<para>私聊:private</para><para>群聊:group</para></param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="AutoEscape">是否转义<para>默认:false</para></param>
|
||||
<returns>错误返回-1,成功返回信息ID</returns>
|
||||
@@ -94,7 +114,7 @@
|
||||
群组踢人
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="RejectAddRequest">是否自动拒绝此人加群申请<para>默认:false</para></param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SetGroupBan(System.Int64,System.Int64,System.Int32)">
|
||||
@@ -102,7 +122,7 @@
|
||||
群组单人禁言
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="Duration">禁言时间,单位秒<para>默认:30分钟(1800秒)</para></param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SetGroupAnonymousBan(System.Int64,System.Int32,System.String,AuroraNative.EventArgs.Anonymous)">
|
||||
@@ -126,7 +146,7 @@
|
||||
设置群管理员
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="Enable">是否设置为管理员<para>默认:true</para></param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SetGroupCard(System.Int64,System.Int64,System.String)">
|
||||
@@ -134,7 +154,7 @@
|
||||
设置群名片
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="Card">群名片内容<para>默认:null(删除群名片)</para></param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SetGroupName(System.Int64,System.String)">
|
||||
@@ -156,7 +176,7 @@
|
||||
设置群组专属头衔
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="SpecialTitle">群名片内容<para>默认:null(删除群名片)</para></param>
|
||||
<param name="Duration">专属头衔有效期, 单位秒, 不过此项似乎没有效果, 可能是只有某些特殊的时间长度有效, 有待测试<para>默认:-1(永久)</para></param>
|
||||
</member>
|
||||
@@ -187,7 +207,7 @@
|
||||
<summary>
|
||||
获取陌生人信息
|
||||
</summary>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="Cache">是否使用缓存,使用缓存响应快但是可能更新不及时<para>默认:false</para></param>
|
||||
<returns>错误返回null,成功返回JObject</returns>
|
||||
</member>
|
||||
@@ -216,7 +236,7 @@
|
||||
获取群成员信息
|
||||
</summary>
|
||||
<param name="GroupID">群号</param>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<param name="Cache">是否使用缓存,使用缓存响应快但是可能更新不及时<para>默认:false</para></param>
|
||||
<returns>错误返回null,成功返回JObject</returns>
|
||||
</member>
|
||||
@@ -351,7 +371,7 @@
|
||||
<summary>
|
||||
获取VIP信息
|
||||
</summary>
|
||||
<param name="QID">QQ号</param>
|
||||
<param name="UserID">QQ号</param>
|
||||
<returns>错误返回null,成功返回JObject</returns>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Api.SendGroupNotice(System.Int64,System.String)">
|
||||
@@ -703,146 +723,34 @@
|
||||
请求事件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.Event">
|
||||
<member name="T:AuroraNative.LogLevel">
|
||||
<summary>
|
||||
事件类
|
||||
表示日志信息等级的枚举
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.LifeCycle(AuroraNative.EventArgs.LifeCycleArgs)">
|
||||
<member name="F:AuroraNative.LogLevel.Debug">
|
||||
<summary>
|
||||
元事件 - 生命周期
|
||||
表示输出日志的等级是 "调试" 级别
|
||||
</summary>
|
||||
<param name="e">生命周期事件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.HeartBeat(AuroraNative.EventArgs.HeartBeatArgs)">
|
||||
<member name="F:AuroraNative.LogLevel.Info">
|
||||
<summary>
|
||||
元事件 - 心跳
|
||||
表示输出日志的等级是 "信息" 级别
|
||||
</summary>
|
||||
<param name="e">心跳事件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivateMessage(AuroraNative.EventArgs.PrivateMessageArgs)">
|
||||
<member name="F:AuroraNative.LogLevel.Warning">
|
||||
<summary>
|
||||
消息事件 - 私聊消息
|
||||
表示输出日志的等级是 "警告" 级别
|
||||
</summary>
|
||||
<param name="e">私聊消息参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMessage(AuroraNative.EventArgs.GroupMessageArgs)">
|
||||
<member name="F:AuroraNative.LogLevel.Error">
|
||||
<summary>
|
||||
消息事件 - 群消息
|
||||
表示输出日志的等级是 "错误" 级别
|
||||
</summary>
|
||||
<param name="e">群消息参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.FriendAddRequest(AuroraNative.EventArgs.FriendAddRequsetArgs)">
|
||||
<member name="F:AuroraNative.LogLevel.Off">
|
||||
<summary>
|
||||
请求事件 - 好友请求
|
||||
</summary>
|
||||
<param name="e">好友请求参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupAddRequest(AuroraNative.EventArgs.GroupAddRequestArgs)">
|
||||
<summary>
|
||||
请求事件 - 群请求
|
||||
</summary>
|
||||
<param name="e">群请求参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupUpload(AuroraNative.EventArgs.GroupUploadArgs)">
|
||||
<summary>
|
||||
通知事件 - 群文件上传
|
||||
</summary>
|
||||
<param name="e">群文件上传参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupManageChange(AuroraNative.EventArgs.GroupManageChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群管理员变动
|
||||
</summary>
|
||||
<param name="e">群管理员变动参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberDecrease(AuroraNative.EventArgs.GroupMemberDecreaseArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员减少
|
||||
</summary>
|
||||
<param name="e">群成员减少参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberIncrease(AuroraNative.EventArgs.GroupMemberIncreaseArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员增加
|
||||
</summary>
|
||||
<param name="e">群成员增加参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupBanSpeak(AuroraNative.EventArgs.GroupBanSpeakArgs)">
|
||||
<summary>
|
||||
通知事件 - 群禁言
|
||||
</summary>
|
||||
<param name="e">群禁言参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.FriendAdd(AuroraNative.EventArgs.FriendAddArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友添加
|
||||
</summary>
|
||||
<param name="e">好友添加参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMessageRecall(AuroraNative.EventArgs.GroupMessageRecallArgs)">
|
||||
<summary>
|
||||
通知事件 - 群消息撤回
|
||||
</summary>
|
||||
<param name="e">群消息撤回参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivateMessageRecall(AuroraNative.EventArgs.PrivateMessageRecallArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友消息撤回
|
||||
</summary>
|
||||
<param name="e">好友消息撤回参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupPoke(AuroraNative.EventArgs.GroupPokeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群内戳一戳
|
||||
</summary>
|
||||
<param name="e">群内戳一戳参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivatePoke(AuroraNative.EventArgs.PrivatePokeArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友戳一戳
|
||||
</summary>
|
||||
<param name="e">群内戳一戳参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupRedPoketLuckyKing(AuroraNative.EventArgs.GroupRedPoketLuckyKingArgs)">
|
||||
<summary>
|
||||
通知事件 - 群红包运气王提示
|
||||
</summary>
|
||||
<param name="e">群红包运气王提示参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberHonorChange(AuroraNative.EventArgs.GroupMemberHonorChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员荣誉变更提示
|
||||
</summary>
|
||||
<param name="e">群成员荣誉变更提示参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupCardVerify(AuroraNative.EventArgs.GroupCardVerifyArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员名片更新(核验)
|
||||
</summary>
|
||||
<param name="e">群成员名片更新(核验)参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GetOfflineFile(AuroraNative.EventArgs.GetOfflineFileArgs)">
|
||||
<summary>
|
||||
通知事件 - 接收到离线文件
|
||||
</summary>
|
||||
<param name="e">接收到离线文件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.ClientStatusChange(AuroraNative.EventArgs.ClientStatusChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 其他客户端在线状态变更
|
||||
</summary>
|
||||
<param name="e">其他客户端在线状态变更参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.EssenceMessageChange(AuroraNative.EventArgs.EssenceMessageChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 精华消息变更
|
||||
</summary>
|
||||
<param name="e">精华消息变更参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.RouterNotify(Newtonsoft.Json.Linq.JObject)">
|
||||
<summary>
|
||||
请勿使用,用于子事件分发
|
||||
表示不输出日志
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.EventArgs.Anonymous">
|
||||
@@ -1789,6 +1697,148 @@
|
||||
异常 类 -- 关于WebSocket异常
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.Event">
|
||||
<summary>
|
||||
事件类
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.LifeCycle(AuroraNative.EventArgs.LifeCycleArgs)">
|
||||
<summary>
|
||||
元事件 - 生命周期
|
||||
</summary>
|
||||
<param name="e">生命周期事件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.HeartBeat(AuroraNative.EventArgs.HeartBeatArgs)">
|
||||
<summary>
|
||||
元事件 - 心跳
|
||||
</summary>
|
||||
<param name="e">心跳事件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivateMessage(AuroraNative.EventArgs.PrivateMessageArgs)">
|
||||
<summary>
|
||||
消息事件 - 私聊消息
|
||||
</summary>
|
||||
<param name="e">私聊消息参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMessage(AuroraNative.EventArgs.GroupMessageArgs)">
|
||||
<summary>
|
||||
消息事件 - 群消息
|
||||
</summary>
|
||||
<param name="e">群消息参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.FriendAddRequest(AuroraNative.EventArgs.FriendAddRequsetArgs)">
|
||||
<summary>
|
||||
请求事件 - 好友请求
|
||||
</summary>
|
||||
<param name="e">好友请求参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupAddRequest(AuroraNative.EventArgs.GroupAddRequestArgs)">
|
||||
<summary>
|
||||
请求事件 - 群请求
|
||||
</summary>
|
||||
<param name="e">群请求参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupUpload(AuroraNative.EventArgs.GroupUploadArgs)">
|
||||
<summary>
|
||||
通知事件 - 群文件上传
|
||||
</summary>
|
||||
<param name="e">群文件上传参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupManageChange(AuroraNative.EventArgs.GroupManageChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群管理员变动
|
||||
</summary>
|
||||
<param name="e">群管理员变动参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberDecrease(AuroraNative.EventArgs.GroupMemberDecreaseArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员减少
|
||||
</summary>
|
||||
<param name="e">群成员减少参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberIncrease(AuroraNative.EventArgs.GroupMemberIncreaseArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员增加
|
||||
</summary>
|
||||
<param name="e">群成员增加参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupBanSpeak(AuroraNative.EventArgs.GroupBanSpeakArgs)">
|
||||
<summary>
|
||||
通知事件 - 群禁言
|
||||
</summary>
|
||||
<param name="e">群禁言参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.FriendAdd(AuroraNative.EventArgs.FriendAddArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友添加
|
||||
</summary>
|
||||
<param name="e">好友添加参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMessageRecall(AuroraNative.EventArgs.GroupMessageRecallArgs)">
|
||||
<summary>
|
||||
通知事件 - 群消息撤回
|
||||
</summary>
|
||||
<param name="e">群消息撤回参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivateMessageRecall(AuroraNative.EventArgs.PrivateMessageRecallArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友消息撤回
|
||||
</summary>
|
||||
<param name="e">好友消息撤回参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupPoke(AuroraNative.EventArgs.GroupPokeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群内戳一戳
|
||||
</summary>
|
||||
<param name="e">群内戳一戳参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.PrivatePoke(AuroraNative.EventArgs.PrivatePokeArgs)">
|
||||
<summary>
|
||||
通知事件 - 好友戳一戳
|
||||
</summary>
|
||||
<param name="e">群内戳一戳参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupRedPoketLuckyKing(AuroraNative.EventArgs.GroupRedPoketLuckyKingArgs)">
|
||||
<summary>
|
||||
通知事件 - 群红包运气王提示
|
||||
</summary>
|
||||
<param name="e">群红包运气王提示参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupMemberHonorChange(AuroraNative.EventArgs.GroupMemberHonorChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员荣誉变更提示
|
||||
</summary>
|
||||
<param name="e">群成员荣誉变更提示参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GroupCardVerify(AuroraNative.EventArgs.GroupCardVerifyArgs)">
|
||||
<summary>
|
||||
通知事件 - 群成员名片更新(核验)
|
||||
</summary>
|
||||
<param name="e">群成员名片更新(核验)参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.GetOfflineFile(AuroraNative.EventArgs.GetOfflineFileArgs)">
|
||||
<summary>
|
||||
通知事件 - 接收到离线文件
|
||||
</summary>
|
||||
<param name="e">接收到离线文件参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.ClientStatusChange(AuroraNative.EventArgs.ClientStatusChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 其他客户端在线状态变更
|
||||
</summary>
|
||||
<param name="e">其他客户端在线状态变更参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.EssenceMessageChange(AuroraNative.EventArgs.EssenceMessageChangeArgs)">
|
||||
<summary>
|
||||
通知事件 - 精华消息变更
|
||||
</summary>
|
||||
<param name="e">精华消息变更参数</param>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Event.RouterNotify(Newtonsoft.Json.Linq.JObject)">
|
||||
<summary>
|
||||
请勿使用,用于子事件分发
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.Logger">
|
||||
<summary>
|
||||
彩色日志输出类
|
||||
@@ -1827,31 +1877,6 @@
|
||||
<param name="Message">要输出的信息</param>
|
||||
<param name="MethodName">输出的方法名,可选传入</param>
|
||||
</member>
|
||||
<member name="T:AuroraNative.LogLevel">
|
||||
<summary>
|
||||
表示日志信息等级的枚举
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.LogLevel.Debug">
|
||||
<summary>
|
||||
表示输出日志的等级是 "调试" 级别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.LogLevel.Info">
|
||||
<summary>
|
||||
表示输出日志的等级是 "信息" 级别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.LogLevel.Warning">
|
||||
<summary>
|
||||
表示输出日志的等级是 "警告" 级别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:AuroraNative.LogLevel.Error">
|
||||
<summary>
|
||||
表示输出日志的等级是 "错误" 级别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:AuroraNative.Utils">
|
||||
<summary>
|
||||
通用方法 类
|
||||
@@ -1862,7 +1887,7 @@
|
||||
通过 枚举Description 转为枚举
|
||||
</summary>
|
||||
<typeparam name="T">枚举</typeparam>
|
||||
<param name="description">需要转换的Description</param>
|
||||
<param name="Description">需要转换的Description</param>
|
||||
<returns>返回该枚举</returns>
|
||||
</member>
|
||||
<member name="M:AuroraNative.Utils.GetChildTypeByPostType(Newtonsoft.Json.Linq.JObject)">
|
||||
@@ -1883,6 +1908,16 @@
|
||||
WebSocket 基础类
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.WebSockets.BaseWebSocket.Create">
|
||||
<summary>
|
||||
客户端创建 抽象方法
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.WebSockets.BaseWebSocket.Dispose">
|
||||
<summary>
|
||||
客户端销毁 抽象方法
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.WebSockets.BaseWebSocket.Send(AuroraNative.BaseAPI)">
|
||||
<summary>
|
||||
发送数据到服务端/客户端
|
||||
@@ -1897,7 +1932,12 @@
|
||||
</member>
|
||||
<member name="P:AuroraNative.WebSockets.Client.host">
|
||||
<summary>
|
||||
WebSocket服务端地址<para>请记得带端口号</para>
|
||||
WebSocket服务端地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:AuroraNative.WebSockets.Client.port">
|
||||
<summary>
|
||||
WebSocket服务端端口号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:AuroraNative.WebSockets.Client.#ctor(AuroraNative.Event)">
|
||||
|
29
AuroraNative/Enum/LogLevel.cs
Normal file
29
AuroraNative/Enum/LogLevel.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace AuroraNative
|
||||
{
|
||||
/// <summary>
|
||||
/// 表示日志信息等级的枚举
|
||||
/// </summary>
|
||||
public enum LogLevel
|
||||
{
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "调试" 级别
|
||||
/// </summary>
|
||||
Debug = 0,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "信息" 级别
|
||||
/// </summary>
|
||||
Info = 1,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "警告" 级别
|
||||
/// </summary>
|
||||
Warning = 2,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "错误" 级别
|
||||
/// </summary>
|
||||
Error = 3,
|
||||
/// <summary>
|
||||
/// 表示不输出日志
|
||||
/// </summary>
|
||||
Off = 4
|
||||
}
|
||||
}
|
@@ -1,61 +0,0 @@
|
||||
using AuroraNative.EventArgs;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace AuroraNative
|
||||
{
|
||||
/// <summary>
|
||||
/// Enum和Description特性互转 转换器
|
||||
/// </summary>
|
||||
internal class EnumDescriptionConverter : JsonConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 当属性的值为枚举类型时才使用转换器
|
||||
/// </summary>
|
||||
/// <param name="objectType">目标类型</param>
|
||||
/// <returns>返回布尔值</returns>
|
||||
public override bool CanConvert(Type objectType) => objectType == typeof(Enum);
|
||||
|
||||
/// <summary>
|
||||
/// 获取枚举的描述值
|
||||
/// </summary>
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value.ToString()))
|
||||
{
|
||||
writer.WriteValue("");
|
||||
return;
|
||||
}
|
||||
|
||||
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
|
||||
if (fieldInfo == null)
|
||||
{
|
||||
writer.WriteValue("");
|
||||
return;
|
||||
}
|
||||
|
||||
DescriptionAttribute[] attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
writer.WriteValue(attributes.Length > 0 ? attributes[0].Description : "");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过Description获取枚举值
|
||||
/// </summary>
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
foreach (FieldInfo field in objectType.GetFields())
|
||||
{
|
||||
object[] objects = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
if (objects.Any(item => (item as DescriptionAttribute)?.Description == reader.Value?.ToString()))
|
||||
{
|
||||
return Convert.ChangeType(field.GetValue(-1), objectType);
|
||||
}
|
||||
}
|
||||
|
||||
return CQCodeType.Unknown;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,12 +1,14 @@
|
||||
using AuroraNative.EventArgs;
|
||||
using AuroraNative.WebSockets;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
|
||||
namespace AuroraNative
|
||||
{
|
||||
/// <summary>
|
||||
/// 事件类
|
||||
/// </summary>
|
||||
public class Event
|
||||
public abstract class Event
|
||||
{
|
||||
#region --公开函数--
|
||||
|
||||
@@ -230,5 +232,23 @@ namespace AuroraNative
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region --私有函数--
|
||||
|
||||
internal static async void CheckVersion()
|
||||
{
|
||||
Logger.Debug("开始检查 go-cqhttp 版本是否符合最低版本...");
|
||||
if ((await Api.CurrentApi.GetVersionInfo()).TryGetValue("AppVersion", out object Version) && new Version(Version.ToString().Substring(1, Version.ToString().IndexOf('-') - 1)) < BaseWebSocket.DependencyVersion)
|
||||
{
|
||||
Logger.Warning($"框架最低依赖版本与 go-cqhttp 不符!请检查是否为最新的框架或符合的 go-cqhttp\ngo-cqhttp版本:{Version}\n框架最低依赖版本:v{BaseWebSocket.DependencyVersion}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug("go-cqhttp 版本符合最低版本!");
|
||||
}
|
||||
BaseWebSocket.IsCheckVersion = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,7 @@ namespace AuroraNative
|
||||
{
|
||||
if (LogLevel <= LogLevel.Debug)
|
||||
{
|
||||
Output(Message, ConsoleColor.Gray, LogLevel.Debug, MethodName);
|
||||
Output(Message, ConsoleColor.Gray, LogLevel.Debug, MethodName, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,43 +74,31 @@ namespace AuroraNative
|
||||
|
||||
#region --私有函数--
|
||||
|
||||
internal static void Output(string Message, ConsoleColor Color, LogLevel Level, string MethodName)
|
||||
internal static void Output(string Message, ConsoleColor Color, LogLevel Level, string MethodName, bool IsFine = false)
|
||||
{
|
||||
Console.ForegroundColor = Color;
|
||||
if (MethodName != null)
|
||||
string NowTime;
|
||||
|
||||
if (!IsFine)
|
||||
{
|
||||
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") + $" [{Level}]" + $" [{MethodName}] " + Message);
|
||||
NowTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + $" [{Level}] " + Message);
|
||||
NowTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff");
|
||||
}
|
||||
|
||||
if (MethodName != null)
|
||||
{
|
||||
Console.WriteLine($"[{NowTime}]" + $" [{Level}]" + $" [{MethodName}]: " + Message);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"[{NowTime}]" + $" [{Level}]: " + Message);
|
||||
}
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示日志信息等级的枚举
|
||||
/// </summary>
|
||||
public enum LogLevel
|
||||
{
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "调试" 级别
|
||||
/// </summary>
|
||||
Debug = 0,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "信息" 级别
|
||||
/// </summary>
|
||||
Info = 1,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "警告" 级别
|
||||
/// </summary>
|
||||
Warning = 2,
|
||||
/// <summary>
|
||||
/// 表示输出日志的等级是 "错误" 级别
|
||||
/// </summary>
|
||||
Error = 3
|
||||
}
|
||||
}
|
||||
|
@@ -17,20 +17,34 @@ namespace AuroraNative.WebSockets
|
||||
{
|
||||
#region --变量--
|
||||
|
||||
internal int Port = 6700;
|
||||
internal WebSocket WebSocket;
|
||||
internal Event EventHook;
|
||||
internal JObject Json;
|
||||
internal static Type[] AttributeTypes;
|
||||
internal static readonly Type[] AttributeTypes = Assembly.GetExecutingAssembly().GetTypes().Where(p => p.IsAbstract == false && p.IsInterface == false && typeof(Attribute).IsAssignableFrom(p)).ToArray();
|
||||
internal static readonly Version DependencyVersion = new Version("0.9.40");
|
||||
internal static bool IsCheckVersion = false;
|
||||
|
||||
#endregion
|
||||
|
||||
#region --公开函数--
|
||||
|
||||
/// <summary>
|
||||
/// 客户端创建 抽象方法
|
||||
/// </summary>
|
||||
public abstract void Create();
|
||||
/// <summary>
|
||||
/// 客户端销毁 抽象方法
|
||||
/// </summary>
|
||||
public abstract void Dispose();
|
||||
|
||||
internal abstract void Feedback();
|
||||
|
||||
/// <summary>
|
||||
/// 发送数据到服务端/客户端
|
||||
/// </summary>
|
||||
/// <param name="Json">传输Json格式的文本</param>
|
||||
public void Send(BaseAPI Json)
|
||||
internal void Send(BaseAPI Json)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -64,7 +78,7 @@ namespace AuroraNative.WebSockets
|
||||
{
|
||||
foreach (MethodInfo Method in EventHook.GetType().GetMethods().Where(p => p.GetCustomAttribute<PostTypeAttribute>() != null))
|
||||
{
|
||||
if (Method.GetCustomAttribute(Type) is BaseAttribute attribute && attribute.Type == (string)Json.GetValue(Utils.GetChildTypeByPostType(Json)))
|
||||
if (Method.GetCustomAttribute(Type) is BaseAttribute Attribute && Attribute.Type == (string)Json.GetValue(Utils.GetChildTypeByPostType(Json)))
|
||||
{
|
||||
ParameterInfo Parameter = Method.GetParameters().SingleOrDefault();
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net.WebSockets;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -15,25 +15,41 @@ namespace AuroraNative.WebSockets
|
||||
{
|
||||
#region --变量--
|
||||
|
||||
private string Host = "127.0.0.1:6700";
|
||||
private string Host = "127.0.0.1";
|
||||
|
||||
/// <summary>
|
||||
/// WebSocket服务端地址<para>请记得带端口号</para>
|
||||
/// WebSocket服务端地址
|
||||
/// </summary>
|
||||
public string host
|
||||
{
|
||||
private get { return Host; }
|
||||
set { Host = value; }
|
||||
set
|
||||
{
|
||||
if (value.Contains(":"))
|
||||
{
|
||||
string[] Cache = value.Split(':');
|
||||
Host = Cache[0];
|
||||
Port = int.Parse(Cache[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Host = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// WebSocket服务端端口号
|
||||
/// </summary>
|
||||
public int port
|
||||
{
|
||||
private get { return Port; }
|
||||
set { Port = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region --构造函数--
|
||||
|
||||
static Client()
|
||||
{
|
||||
AttributeTypes = Assembly.GetExecutingAssembly().GetTypes().Where(p => p.IsAbstract == false && p.IsInterface == false && typeof(Attribute).IsAssignableFrom(p)).ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建一个 <see cref="Client"/> 实例
|
||||
/// </summary>
|
||||
@@ -47,8 +63,13 @@ namespace AuroraNative.WebSockets
|
||||
/// <summary>
|
||||
/// 创建并连接到WebSocket服务器
|
||||
/// </summary>
|
||||
public bool Create()
|
||||
public override void Create()
|
||||
{
|
||||
StringBuilder Cache = new StringBuilder();
|
||||
Cache.Append(Host);
|
||||
Cache.Append(':');
|
||||
Cache.Append(Port);
|
||||
|
||||
Logger.Debug("正向WebSocket已创建,准备连接...", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
for (int i = 1; i < 4; i++)
|
||||
{
|
||||
@@ -57,8 +78,8 @@ namespace AuroraNative.WebSockets
|
||||
WebSocket = new ClientWebSocket();
|
||||
if (WebSocket is ClientWebSocket socket)
|
||||
{
|
||||
Logger.Debug($"准备连接至IP:{Host}", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
Task Connect = socket.ConnectAsync(new Uri("ws://" + Host + "/"), CancellationToken.None);
|
||||
Logger.Debug($"准备连接至IP:{Cache}", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
Task Connect = socket.ConnectAsync(new Uri("ws://" + Cache.ToString() + "/"), CancellationToken.None);
|
||||
Connect.Wait();
|
||||
if (WebSocket.State == WebSocketState.Open)
|
||||
{
|
||||
@@ -68,7 +89,7 @@ namespace AuroraNative.WebSockets
|
||||
Logger.Debug("go-cqhttp 初始化完毕!");
|
||||
Task.Run(Feedback);
|
||||
Api.Create(this);
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,13 +100,12 @@ namespace AuroraNative.WebSockets
|
||||
}
|
||||
}
|
||||
Logger.Error("连接到 go-cqhttp 服务器失败!请检查IP是否正确(需要携带端口号)或确认服务器是否启动和初始化完毕!", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 立刻中断并释放连接<para>注意!断开后需要重新Create</para>
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
public override void Dispose()
|
||||
{
|
||||
Logger.Debug($"准备销毁正向WebSocket...", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
try
|
||||
@@ -105,7 +125,7 @@ namespace AuroraNative.WebSockets
|
||||
|
||||
#region --私有函数--
|
||||
|
||||
private async void Feedback()
|
||||
internal override async void Feedback()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.WebSockets;
|
||||
using System.Reflection;
|
||||
@@ -16,11 +15,10 @@ namespace AuroraNative.WebSockets
|
||||
{
|
||||
#region --变量--
|
||||
|
||||
private string Port = "6700";
|
||||
/// <summary>
|
||||
/// WebSocket监听端口
|
||||
/// </summary>
|
||||
public string port
|
||||
public int port
|
||||
{
|
||||
private get { return Port; }
|
||||
set { Port = value; }
|
||||
@@ -33,11 +31,6 @@ namespace AuroraNative.WebSockets
|
||||
|
||||
#region --构造函数--
|
||||
|
||||
static Server()
|
||||
{
|
||||
AttributeTypes = Assembly.GetExecutingAssembly().GetTypes().Where(p => p.IsAbstract == false && p.IsInterface == false && typeof(Attribute).IsAssignableFrom(p)).ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建一个 <see cref="Server"/> 实例
|
||||
/// </summary>
|
||||
@@ -51,13 +44,13 @@ namespace AuroraNative.WebSockets
|
||||
/// <summary>
|
||||
/// 创建WebSocket服务器并监听端口
|
||||
/// </summary>
|
||||
public void Create()
|
||||
public override void Create()
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Debug("反向WebSocket已创建,准备监听...", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
Listener = new HttpListener();
|
||||
Listener.Prefixes.Add("http://*:" + Port + "/");
|
||||
Listener.Prefixes.Add("http://*:" + Port.ToString() + "/");
|
||||
Listener.Start();
|
||||
Logger.Info("开始监听来自 go-cqhttp 客户端的连接...");
|
||||
Task.Run(Feedback);
|
||||
@@ -77,7 +70,7 @@ namespace AuroraNative.WebSockets
|
||||
/// <summary>
|
||||
/// 立刻中断并释放连接<para>注意!断开后需要重新Create</para>
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
public override void Dispose()
|
||||
{
|
||||
Logger.Debug($"准备销毁反向WebSocket...", $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}");
|
||||
try
|
||||
@@ -98,7 +91,7 @@ namespace AuroraNative.WebSockets
|
||||
|
||||
#region --私有函数--
|
||||
|
||||
private async void Feedback()
|
||||
internal override async void Feedback()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
|
Reference in New Issue
Block a user