diff options
author | 2022-12-29 00:58:15 +0100 | |
---|---|---|
committer | 2022-12-29 00:58:15 +0100 | |
commit | ab1b5460f4f089283ccd43f9bb19ddcc4e600a3a (patch) | |
tree | 609ebd37878fb5ba5532048d40236fa3c4a53736 /pydis_site/apps/api/models | |
parent | remove useless blank constraint (diff) | |
parent | Update help channels guide (#814) (diff) |
Merge branch 'main' into 2304-link-previous-nomination-threads
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 |