diff --git a/.github/dev.yml b/.github/dev.yml index 1b468e9..6a17968 100644 --- a/.github/dev.yml +++ b/.github/dev.yml @@ -1,7 +1,7 @@ pr: none trigger: [ master ] -name: 4.2.2-dev.$(Rev:r) +name: 4.2.3-dev.$(Rev:r) pool: vmImage: ubuntu-latest diff --git a/src/Client.Helpers.cs b/src/Client.Helpers.cs index be50015..33e5987 100644 --- a/src/Client.Helpers.cs +++ b/src/Client.Helpers.cs @@ -621,6 +621,32 @@ namespace WTelegram return resultFull; } + /// Helper simplified method: Get all topics of a forum See Possible codes: 400 (details) + /// Supergroup + /// Search query + public async Task Channels_GetAllForumTopics(InputChannelBase channel, string q = null) + { + var result = await this.Channels_GetForumTopics(channel, limit: 20, q: q); + if (result.topics.Length < result.count) + { + var topics = result.topics.ToList(); + var messages = result.messages.ToList(); + while (true) + { + var more_topics = await this.Channels_GetForumTopics(channel, messages[^1].Date, messages[^1].ID, topics[^1].ID); + if (more_topics.topics.Length == 0) break; + topics.AddRange(more_topics.topics); + messages.AddRange(more_topics.messages); + foreach (var kvp in more_topics.chats) result.chats[kvp.Key] = kvp.Value; + foreach (var kvp in more_topics.users) result.users[kvp.Key] = kvp.Value; + if (topics.Count >= more_topics.count) break; + } + result.topics = [.. topics]; + result.messages = [.. messages]; + } + return result; + } + private const string OnlyChatChannel = "This method works on Chat & Channel only"; /// Generic helper: Adds a single user to a Chat or Channel See
and
Possible codes: 400,403
/// Chat/Channel