@@ -3,7 +3,14 @@ import type { Db } from 'mongodb';
33import type { StatsCollection } from '../db' ;
44import { getStatsCollection , initDb } from '../db' ;
55import type { Command } from '../types' ;
6- import { getWeekNumber } from '../utils' ;
6+ import { getDateForWeekNumber , getWeekNumber } from '../utils' ;
7+
8+ const formatDate = ( d : Date ) =>
9+ String ( d . getUTCFullYear ( ) ) +
10+ '-' +
11+ String ( d . getUTCMonth ( ) + 1 ) . padStart ( 2 , '0' ) +
12+ '-' +
13+ String ( d . getUTCDate ( ) ) . padStart ( 2 , '0' ) ;
714
815const stats : Command = {
916 name : 'stats' ,
@@ -13,11 +20,15 @@ const stats: Command = {
1320 async execute ( msg ) {
1421 const db = await initDb ( ) ;
1522
16- const { totalStats, statsChangeThisWeek } = await getStatsChangeThisWeek ( db ) ;
23+ const { totalStats, statsChangeThisWeek, year1, year2, week1, week2 } =
24+ await getStatsChangeThisWeek ( db ) ;
25+
26+ const d1 = formatDate ( getDateForWeekNumber ( year2 , week2 + 1 ) ) ;
27+ const d2 = formatDate ( getDateForWeekNumber ( year1 , week1 + 1 ) ) ;
1728
1829 return msg . channel . send (
1930 [
20- format ( ' Najbardziej aktywne w tym tygodniu:' , statsChangeThisWeek ) ,
31+ format ( ` Najbardziej aktywne w tym tygodniu ( ${ d1 } – ${ d2 } ):` , statsChangeThisWeek ) ,
2132 '\n' ,
2233 format ( 'Najbardziej aktywne osoby od początku istnienia serwera:' , totalStats ) ,
2334 ] . join ( '\n' ) ,
@@ -50,7 +61,7 @@ async function getStatsChangeThisWeek(db: Db) {
5061
5162 const now = new Date ( ) ;
5263 const [ year1 , week1 ] = getWeekNumber ( now ) ;
53- const thisweek = `${ year1 } -${ week1 } ` ;
64+ const thisWeek = `${ year1 } -${ week1 } ` ;
5465
5566 now . setDate ( now . getDate ( ) - 7 ) ;
5667 const [ year2 , week2 ] = getWeekNumber ( now ) ;
@@ -66,7 +77,7 @@ async function getStatsChangeThisWeek(db: Db) {
6677 )
6778 . toArray ( ) ,
6879
69- statsCollection . find ( { yearWeek : thisweek } ) . toArray ( ) ,
80+ statsCollection . find ( { yearWeek : thisWeek } ) . toArray ( ) ,
7081
7182 statsCollection . find ( { yearWeek : previousWeek } ) . toArray ( ) ,
7283 ] ) ;
@@ -88,7 +99,14 @@ async function getStatsChangeThisWeek(db: Db) {
8899 . filter ( ( obj ) : obj is Stats => ! ! obj )
89100 . sort ( ( a , b ) => b . messagesCount - a . messagesCount ) ;
90101
91- return { statsChangeThisWeek, totalStats : totalStats as readonly Stats [ ] } ;
102+ return {
103+ statsChangeThisWeek,
104+ totalStats : totalStats as readonly Stats [ ] ,
105+ year1,
106+ year2,
107+ week1,
108+ week2,
109+ } ;
92110}
93111
94112function resultToMessagesByMemberId ( stats : readonly StatsCollection [ ] ) {
0 commit comments