Skip to content

Commit 09c1aef

Browse files
committed
Add Conversation.Replies API
1 parent 76e14d8 commit 09c1aef

4 files changed

Lines changed: 60 additions & 1 deletion

File tree

source/src/Slackbot.Net.SlackClients.Http/ISlackClient.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Slackbot.Net.SlackClients.Http.Models.Responses.ChatGetPermalink;
55
using Slackbot.Net.SlackClients.Http.Models.Responses.ChatPostMessage;
66
using Slackbot.Net.SlackClients.Http.Models.Responses.ConversationsList;
7+
using Slackbot.Net.SlackClients.Http.Models.Responses.ConversationsRepliesResponse;
78
using Slackbot.Net.SlackClients.Http.Models.Responses.UserProfile;
89
using Slackbot.Net.SlackClients.Http.Models.Responses.UsersList;
910
using Slackbot.Net.SlackClients.Http.Models.Responses.ViewPublish;
@@ -58,6 +59,13 @@ public interface ISlackClient
5859
/// </summary>
5960
/// <remarks>https://api.slack.com/methods/conversations.members</remarks>
6061
Task<ConversationsListResponse> ConversationsMembers(string channel);
62+
63+
64+
/// <summary>
65+
/// Scopes required: channels:history/groups:history/im:history or mpim:history
66+
/// </summary>
67+
/// <remarks>https://api.slack.com/methods/conversations.list</remarks>
68+
Task<ConversationsRepliesResponse> ConversationsReplies(string channel, string ts, int? limit = null, string cursor = null);
6169

6270

6371
/// <summary>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Slackbot.Net.SlackClients.Http.Models.Responses.ConversationsRepliesResponse;
2+
3+
public class ConversationsRepliesResponse : Response
4+
{
5+
public Message[] Messages { get; set; }
6+
}
7+
8+
public class Message
9+
{
10+
public string Type { get; set; }
11+
public string User { get; set; }
12+
public string Text { get; set; }
13+
public string Thread_Ts { get; set; }
14+
public string Parent_User_id { get; set; }
15+
public string Ts { get; set; }
16+
}

source/src/Slackbot.Net.SlackClients.Http/SlackClient.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Slackbot.Net.SlackClients.Http.Models.Responses.ChatGetPermalink;
77
using Slackbot.Net.SlackClients.Http.Models.Responses.ChatPostMessage;
88
using Slackbot.Net.SlackClients.Http.Models.Responses.ConversationsList;
9+
using Slackbot.Net.SlackClients.Http.Models.Responses.ConversationsRepliesResponse;
910
using Slackbot.Net.SlackClients.Http.Models.Responses.UserProfile;
1011
using Slackbot.Net.SlackClients.Http.Models.Responses.UsersList;
1112
using Slackbot.Net.SlackClients.Http.Models.Responses.ViewPublish;
@@ -100,7 +101,19 @@ public async Task<ConversationsListResponse> ConversationsMembers(string channel
100101
};
101102
return await _client.PostParametersAsForm<ConversationsListResponse>(parameters,"conversations.members", s => _logger.LogTrace(s));
102103
}
103-
104+
105+
/// <inheritdoc/>
106+
public async Task<ConversationsRepliesResponse> ConversationsReplies(string channel, string ts, int? limit = null, string cursor = null)
107+
{
108+
var parameters = new List<KeyValuePair<string, string>>
109+
{
110+
new KeyValuePair<string, string>("channel", channel),
111+
new KeyValuePair<string, string>("ts", ts),
112+
new KeyValuePair<string, string>("limit", (limit ?? 1000).ToString()),
113+
};
114+
return await _client.PostParametersAsForm<ConversationsRepliesResponse>(parameters,"conversations.replies", s => _logger.LogTrace(s));
115+
}
116+
104117
/// <inheritdoc/>
105118
public async Task<Response> AppsUninstall(string clientId, string clientSecret)
106119
{
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Newtonsoft.Json;
2+
using Slackbot.Net.Tests.Helpers;
3+
4+
namespace Slackbot.Net.Tests
5+
{
6+
public class ConversationsRepliesTests : Setup
7+
{
8+
private readonly ITestOutputHelper _helper;
9+
10+
public ConversationsRepliesTests(ITestOutputHelper helper) : base(helper)
11+
{
12+
_helper = helper;
13+
}
14+
15+
[Fact]
16+
public async Task ConversationsListWorks()
17+
{
18+
var response = await SlackClient.ConversationsReplies("C0EC3DG5N","1679144061.148689");
19+
Assert.True(response.Ok);
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)