diff options
author | 2022-11-20 14:38:08 +0100 | |
---|---|---|
committer | 2022-11-20 14:38:08 +0100 | |
commit | 52c243908a940dae2e66c64f54d35ed12276d04f (patch) | |
tree | d29cb4ab470e0d23f64e6b478b2e68ba6eea94aa /pydis_site/apps/api/models | |
parent | Merge pull request #798 from python-discord/fix-manage-py-no-args (diff) | |
parent | Merge branch 'main' into messages-in-past-n-days-endpoint (diff) |
Merge pull request #789 from python-discord/messages-in-past-n-days-endpoint
Messages in past n days endpoint
Diffstat (limited to 'pydis_site/apps/api/models')
-rw-r--r-- | pydis_site/apps/api/models/bot/metricity.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/pydis_site/apps/api/models/bot/metricity.py b/pydis_site/apps/api/models/bot/metricity.py index abd25ef0..f53dd33c 100644 --- a/pydis_site/apps/api/models/bot/metricity.py +++ b/pydis_site/apps/api/models/bot/metricity.py @@ -130,3 +130,31 @@ class Metricity: raise NotFoundError() return values + + def total_messages_in_past_n_days( + self, + user_ids: list[str], + days: int + ) -> list[tuple[str, int]]: + """ + Query activity by a list of users in the past `days` days. + + Returns a list of (user_id, message_count) tuples. + """ + self.cursor.execute( + """ + SELECT + author_id, COUNT(*) + FROM messages + WHERE + author_id IN %s + AND NOT is_deleted + AND channel_id NOT IN %s + AND created_at > now() - interval '%s days' + GROUP BY author_id + """, + [tuple(user_ids), EXCLUDE_CHANNELS, days] + ) + values = self.cursor.fetchall() + + return values |