Skip to content

Commit e2866d5

Browse files
clanstystevesensei
andauthored
feat: 获取文件 URL (#6)
Co-authored-by: Kexun Liu <32810212+stevesensei@users.noreply.github.com>
1 parent 301f0ff commit e2866d5

File tree

4 files changed

+171
-1
lines changed

4 files changed

+171
-1
lines changed

NapPlana.Net.Core/Bot/BotInstance/INapBot.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,20 @@ Task<PrivateMessageSendResponseData> SendPrivateMessageAsync(PrivateMessageSend
5050
/// 发送私聊合并转发消息
5151
/// </summary>
5252
Task<ForwardMessageSendResponseData> SendPrivateForwardMessageAsync(PrivateForwardMessageSend message, int timeoutSeconds = 15);
53+
/// <summary>
54+
/// 获取文件信息
55+
/// </summary>
56+
Task<GetFileResponseData> GetFileAsync(GetFileRequest request, int timeoutSeconds = 15);
57+
58+
/// <summary>
59+
/// 获取群文件下载链接
60+
/// </summary>
61+
Task<GetFileUrlResponseData> GetGroupFileUrlAsync(GetGroupFileUrlRequest request, int timeoutSeconds = 15);
62+
63+
/// <summary>
64+
/// 获取私聊文件下载链接
65+
/// </summary>
66+
Task<GetFileUrlResponseData> GetPrivateFileUrlAsync(GetPrivateFileUrlRequest request, int timeoutSeconds = 15);
5367

5468
/// <summary>
5569
/// 处理好友添加请求

NapPlana.Net.Core/Bot/BotInstance/NapBot.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,45 @@ public async Task<ForwardMessageSendResponseData> SendPrivateForwardMessageAsync
173173
return res ?? throw new Exception("Failed to send private forward message.");
174174
}
175175

176+
/// <summary>
177+
/// 获取文件信息
178+
/// </summary>
179+
/// <param name="request">请求参数</param>
180+
/// <param name="timeoutSeconds">超时时间</param>
181+
/// <returns>文件信息</returns>
182+
public async Task<GetFileResponseData> GetFileAsync(GetFileRequest request, int timeoutSeconds = 15)
183+
{
184+
if (request is null) throw new ArgumentNullException(nameof(request));
185+
var res = await SendMessageAsync<GetFileResponseData>(request, ApiActionType.GetFile, timeoutSeconds);
186+
return res ?? throw new Exception("Failed to get file info.");
187+
}
188+
189+
/// <summary>
190+
/// 获取群文件下载链接
191+
/// </summary>
192+
/// <param name="request">请求参数</param>
193+
/// <param name="timeoutSeconds">超时时间</param>
194+
/// <returns>文件下载链接</returns>
195+
public async Task<GetFileUrlResponseData> GetGroupFileUrlAsync(GetGroupFileUrlRequest request, int timeoutSeconds = 15)
196+
{
197+
if (request is null) throw new ArgumentNullException(nameof(request));
198+
var res = await SendMessageAsync<GetFileUrlResponseData>(request, ApiActionType.GetGroupFileUrl, timeoutSeconds);
199+
return res ?? throw new Exception("Failed to get group file url.");
200+
}
201+
202+
/// <summary>
203+
/// 获取私聊文件下载链接
204+
/// </summary>
205+
/// <param name="request">请求参数</param>
206+
/// <param name="timeoutSeconds">超时时间</param>
207+
/// <returns>文件下载链接</returns>
208+
public async Task<GetFileUrlResponseData> GetPrivateFileUrlAsync(GetPrivateFileUrlRequest request, int timeoutSeconds = 15)
209+
{
210+
if (request is null) throw new ArgumentNullException(nameof(request));
211+
var res = await SendMessageAsync<GetFileUrlResponseData>(request, ApiActionType.GetPrivateFileUrl, timeoutSeconds);
212+
return res ?? throw new Exception("Failed to get private file url.");
213+
}
214+
176215
/// <summary>
177216
/// 处理好友添加请求
178217
/// </summary>
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace NapPlana.Core.Data.API;
4+
5+
/// <summary>
6+
/// 获取文件信息-请求
7+
/// </summary>
8+
public class GetFileRequest
9+
{
10+
/// <summary>
11+
/// 文件ID
12+
/// </summary>
13+
[JsonPropertyName("file_id")]
14+
public string? FileId { get; set; }
15+
16+
/// <summary>
17+
/// 文件路径、URL或Base64
18+
/// </summary>
19+
[JsonPropertyName("file")]
20+
public string? File { get; set; }
21+
}
22+
23+
/// <summary>
24+
/// 获取文件信息-响应
25+
/// </summary>
26+
public class GetFileResponseData : ResponseDataBase
27+
{
28+
/// <summary>
29+
/// 本地路径
30+
/// </summary>
31+
[JsonPropertyName("file")]
32+
public string? File { get; set; }
33+
34+
/// <summary>
35+
/// 下载URL
36+
/// </summary>
37+
[JsonPropertyName("url")]
38+
public string? Url { get; set; }
39+
40+
/// <summary>
41+
/// 文件大小
42+
/// </summary>
43+
[JsonPropertyName("file_size")]
44+
public string? FileSize { get; set; }
45+
46+
/// <summary>
47+
/// 文件名
48+
/// </summary>
49+
[JsonPropertyName("file_name")]
50+
public string? FileName { get; set; }
51+
52+
/// <summary>
53+
/// Base64编码
54+
/// </summary>
55+
[JsonPropertyName("base64")]
56+
public string? Base64 { get; set; }
57+
}
58+
59+
/// <summary>
60+
/// 获取群文件下载链接-请求
61+
/// </summary>
62+
public class GetGroupFileUrlRequest
63+
{
64+
/// <summary>
65+
/// 群号
66+
/// </summary>
67+
[JsonPropertyName("group_id")]
68+
public string GroupId { get; set; } = string.Empty;
69+
70+
/// <summary>
71+
/// 文件ID
72+
/// </summary>
73+
[JsonPropertyName("file_id")]
74+
public string FileId { get; set; } = string.Empty;
75+
}
76+
77+
/// <summary>
78+
/// 获取私聊文件下载链接-请求
79+
/// </summary>
80+
public class GetPrivateFileUrlRequest
81+
{
82+
/// <summary>
83+
/// 文件ID
84+
/// </summary>
85+
[JsonPropertyName("file_id")]
86+
public string FileId { get; set; } = string.Empty;
87+
}
88+
89+
/// <summary>
90+
/// 获取文件下载链接-响应(群聊/私聊通用)
91+
/// </summary>
92+
public class GetFileUrlResponseData : ResponseDataBase
93+
{
94+
/// <summary>
95+
/// 文件下载链接
96+
/// </summary>
97+
[JsonPropertyName("url")]
98+
public string? Url { get; set; }
99+
}

NapPlana.Net.Core/Data/Enumeration.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,25 @@ public enum ApiActionType
783783
/// 发送合并转发消息。
784784
/// </summary>
785785
[JsonPropertyName("send_forward_msg")]
786-
SendForwardMsg = 38
786+
SendForwardMsg = 38,
787+
788+
/// <summary>
789+
/// 获取文件信息。
790+
/// </summary>
791+
[JsonPropertyName("get_file")]
792+
GetFile = 39,
793+
794+
/// <summary>
795+
/// 获取群文件下载链接。
796+
/// </summary>
797+
[JsonPropertyName("get_group_file_url")]
798+
GetGroupFileUrl = 40,
799+
800+
/// <summary>
801+
/// 获取私聊文件下载链接。
802+
/// </summary>
803+
[JsonPropertyName("get_private_file_url")]
804+
GetPrivateFileUrl = 41
787805
}
788806

789807
/// <summary>

0 commit comments

Comments
 (0)