mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-11 00:07:55 +00:00
feat: decrement message counts on bulk message deletions
This commit is contained in:
parent
71dd59b57d
commit
21a63a43cc
3 changed files with 30 additions and 6 deletions
|
|
@ -63,6 +63,27 @@ public class MessageDeleted: IEventHandler<MessageDeleteEvent>, IEventHandler<Me
|
|||
_logger.Information("Bulk deleting {Count} messages in channel {Channel}",
|
||||
evt.Ids.Length, evt.ChannelId);
|
||||
await _repo.DeleteMessagesBulk(evt.Ids);
|
||||
|
||||
// get all the messages from the database
|
||||
var messages = await _repo.GetMessagesBulk(evt.Ids);
|
||||
|
||||
// make a dictionary of every member id associated with a message and how many messages it's associated with
|
||||
var memberMessageCounts = new Dictionary<MemberId, int>();
|
||||
foreach (PKMessage msg in messages)
|
||||
{
|
||||
if (!msg.Member.HasValue) continue;
|
||||
if (memberMessageCounts.ContainsKey(msg.Member.Value))
|
||||
memberMessageCounts[msg.Member.Value] = memberMessageCounts[msg.Member.Value] + 1;
|
||||
else
|
||||
memberMessageCounts[msg.Member.Value] = 1;
|
||||
}
|
||||
|
||||
// go through each member id in dictionary and decrement that member's message count by appropriate amount
|
||||
foreach (MemberId member in memberMessageCounts.Keys)
|
||||
{
|
||||
await _repo.UpdateMemberForDeletedMessage(member, (await _repo.GetMember(member)).MessageCount, memberMessageCounts[member]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
_lastMessage.HandleMessageDeletion(evt.ChannelId, evt.Ids.ToList());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue