This commit is contained in:
Laura Hausmann 2019-12-17 12:04:56 +01:00
parent 93eda081db
commit a3e39142d6
Signed by: zotan
GPG key ID: 5EC1D38FFC321311
2 changed files with 36 additions and 5 deletions

View file

@ -315,6 +315,12 @@ namespace telegram {
public OpenSecretCommand() : base("os", "", "opens a secret chat. queries chat list.", "<query>", -1) { }
public override void Handler(List<string> inputParams) {
if (inputParams.Count == 0) {
lock (@lock)
messageQueue.Add($"{Ansi.Red}[tgcli] No matching chat found.");
return;
}
var query = inputParams.Aggregate((current, param) => current + " " + param).Trim();
var userId = SearchUserInChats(query);
if (userId == 0 || query.Length == 0) {
@ -580,7 +586,9 @@ namespace telegram {
var secretChats = GetSecretChats();
lock (@lock) {
messageQueue.Add($"{Ansi.Yellow}[tgcli] Listing {secretChats.Count} secret chats:");
secretChats.ForEach(chat => { messageQueue.Add($"{Ansi.Bold}{Ansi.Red}[sec] {chat.Title} -> {chat.Id}"); });
secretChats.ForEach(chat => {
messageQueue.Add($"{Ansi.Bold}{Ansi.Red}[sec] {chat.Title} -> {chat.Id} ({GetSecretChat(((TdApi.ChatType.ChatTypeSecret) chat.Type).SecretChatId).State.DataType})");
});
}
}
}

View file

@ -103,10 +103,33 @@ namespace telegram {
}
public static List<Chat> GetUnreadChats(bool all = false) {
var response = client.ExecuteAsync(new GetChats {OffsetOrder = long.MaxValue, Limit = int.MaxValue}).Result;
return all
? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList()
: response.ChatIds.Select(GetChat).Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0).ToList();
var output = new List<Chat>();
var offset = 0L;
while (true) {
if (offset == 0) {
var response = client.ExecuteAsync(new GetChats {OffsetOrder = long.MaxValue, Limit = int.MaxValue}).Result;
offset = GetChat(response.ChatIds.Last()).Order;
output.AddRange(all
? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList()
: response.ChatIds.Select(GetChat)
.Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0)
.ToList());
}
else {
var response = client.ExecuteAsync(new GetChats {OffsetOrder = offset, Limit = int.MaxValue}).Result;
if (response.ChatIds.Length == 0)
break;
offset = GetChat(response.ChatIds.Last()).Order;
output.AddRange(all
? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList()
: response.ChatIds.Select(GetChat)
.Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0)
.ToList());
}
}
return output;
}
public static List<Chat> GetChats() {