Skip to content

Commit 557cc95

Browse files
committed
Merge branch 'master' into production
# Conflicts: # src/discord/bot/analytics/common.ts # src/discord/bot/introduction.ts
2 parents 6f5d66f + 442c115 commit 557cc95

File tree

8 files changed

+47
-4
lines changed

8 files changed

+47
-4
lines changed

src/analytics/events.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ export async function tryToFetchAllCliEvents(): Promise<PosthogEvent[]> {
4343
retries: 10,
4444
minTimeout: 5 * 1000,
4545
maxTimeout: 120 * 1000,
46-
onRetry: (e: Error) => {
46+
onRetry: (error: Error) => {
47+
logger.error(error);
4748
logger.error(
48-
"Error happened while fetching events for report generator, trying again:",
49-
e.message ?? e,
49+
"Error happened while fetching events for report generator, trying again...",
5050
);
5151
},
5252
},

src/analytics/reports/events.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,24 @@ import moment from "../moment";
1212
*/
1313
export async function fetchEventsForReportGenerator(): Promise<PosthogEvent[]> {
1414
const allEvents = await tryToFetchAllCliEvents();
15-
1615
logger.info("\nNumber of CLI events fetched:", allEvents.length);
1716

1817
const waspTeamFilters = [isNotWaspTeamEvent, isNotMihoPrivateCIServerEvent];
1918
const nonWaspTeamEvents = waspTeamFilters.reduce(
2019
(events, f) => events.filter(f),
2120
allEvents,
2221
);
22+
logger.debug(
23+
"\nNumber of non-Wasp-team CLI events:",
24+
nonWaspTeamEvents.length,
25+
);
26+
2327
const sortedNonWaspTeamEvents = _.sortBy(nonWaspTeamEvents, "timestamp");
28+
2429
const sortedValidEvents = markAsCiEventBurstsFromDifferentUsersFromSameIp(
2530
sortedNonWaspTeamEvents,
2631
);
32+
logger.debug("\nNumber of valid CLI events:", sortedValidEvents.length);
2733

2834
return sortedValidEvents;
2935
}

src/analytics/reports/periodReport/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import logger from "../../../utils/logger";
12
import { PosthogEvent } from "../../events";
23
import { fetchEventsForReportGenerator } from "../events";
34
import { AllTimePeriodReport, PeriodReport } from "../reports";
@@ -14,6 +15,11 @@ export async function generatePeriodReport(
1415
numPeriods: number,
1516
periodName: PeriodName,
1617
): Promise<PeriodReport> {
18+
logger.info("Generating a period report...");
19+
logger.debug(
20+
`Period report details: numPeriods=${numPeriods}, periodName=${periodName}, prefetchedEvents=${!!prefetchedEvents}`,
21+
);
22+
1723
const events = prefetchedEvents ?? (await fetchEventsForReportGenerator());
1824

1925
const userActivityReport = await generateUserActivityReport(
@@ -48,6 +54,11 @@ export async function generateAllTimePeriodReport(
4854
numPeriods: number,
4955
periodName: PeriodName,
5056
): Promise<AllTimePeriodReport> {
57+
logger.info("Generating an all-time period report...");
58+
logger.debug(
59+
`All-time period report details: numPeriods=${numPeriods}, periodName=${periodName}, prefetchedEvents=${!!prefetchedEvents}`,
60+
);
61+
5162
const events = prefetchedEvents ?? (await fetchEventsForReportGenerator());
5263

5364
const userActivityReport = await generateUserActivityReport(

src/analytics/reports/totalReport.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import logger from "../../utils/logger";
12
import { PosthogEvent } from "../events";
23
import {
34
EventsByExecutionEnvironment,
@@ -16,6 +17,9 @@ import { groupEventsByProject } from "./utils";
1617
export async function generateTotalReport(
1718
prefetchedEvents: PosthogEvent[] | undefined = undefined,
1819
): Promise<TotalReport> {
20+
logger.info("Generating a total report...");
21+
logger.debug(`Total report details: prefetchedEvents=${!!prefetchedEvents}`);
22+
1923
const events = prefetchedEvents ?? (await fetchEventsForReportGenerator());
2024

2125
const { localEvents, groupedNonLocalEvents } =

src/discord/bot/analytics/commands.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Discord from "discord.js";
22

3+
import logger from "../../../utils/logger";
34
import { REPORTS_CHANNEL_ID } from "../../server-ids";
45
import { GuildMessage } from "../../types";
56
import { fetchTextChannelById } from "../../utils";
@@ -25,6 +26,8 @@ function isReportsChannel(channel: Discord.Channel): boolean {
2526
export async function handleAnalyticsCommand(
2627
message: GuildMessage,
2728
): Promise<void> {
29+
logger.info(`Handling analytics command: ${message.content}...`);
30+
2831
const commandArgs = extractCommandArgs(message.content);
2932
const analyticsCommand = parseAnalyticsCommand(commandArgs);
3033
if (!analyticsCommand) {

src/discord/bot/analytics/common.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TextReport,
99
} from "../../../analytics/reports/reports";
1010
import { Writable } from "../../../types/helpers";
11+
import logger from "../../../utils/logger";
1112
import { REPORTS_CHANNEL_ID } from "../../server-ids";
1213
import { fetchTextChannelById } from "../../utils";
1314

@@ -19,6 +20,10 @@ export async function sendAnalyticsReportToReportsChannel(
1920
prefetchedEvents: PosthogEvent[] | undefined = undefined,
2021
numPeriods: number | undefined = undefined,
2122
): Promise<void> {
23+
logger.info(`Sending analytics report to the reports channel...`);
24+
logger.debug(
25+
`Analytics report details: type=${reportType}, numPeriods=${numPeriods}, prefetchedEvents=${!!prefetchedEvents}`,
26+
);
2227
const waspReportsChannel = await fetchTextChannelById(
2328
discordClient,
2429
REPORTS_CHANNEL_ID,
@@ -67,11 +72,13 @@ const DISCORD_MESSAGE_TOO_LONG_SUFFIX =
6772
function convertSimpleReportToDiscordMessage(
6873
report: Partial<TextReport & ChartReport & ImageChartsReport>,
6974
): Discord.MessageCreateOptions {
75+
logger.info("Converting report to a Discord message");
7076
const options: Discord.MessageCreateOptions = {};
7177
const embeds: Writable<Discord.MessageCreateOptions["embeds"]> = [];
7278
const files: Writable<Discord.MessageCreateOptions["files"]> = [];
7379

7480
if (report.text) {
81+
logger.debug("Report has a `text` field");
7582
let content: string = report.text.join("\n");
7683
if (content.length >= DISCORD_MAX_MSG_SIZE) {
7784
content =
@@ -84,12 +91,16 @@ function convertSimpleReportToDiscordMessage(
8491
}
8592

8693
if (report.imageChartsChart) {
94+
logger.debug(
95+
`Report has a \`imageChartsChart\` field (URL=${report.imageChartsChart.toURL()})`,
96+
);
8797
embeds.push(
8898
new Discord.EmbedBuilder().setImage(report.imageChartsChart.toURL()),
8999
);
90100
}
91101

92102
if (report.bufferChart) {
103+
logger.debug("Report has a `bufferChart` field");
93104
files.push(report.bufferChart);
94105
}
95106

src/discord/bot/daily-standup.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ import Discord from "discord.js";
22
import InspirationalQuotes from "inspirational-quotes";
33
import _ from "lodash";
44

5+
import logger from "../../utils/logger";
56
import { DAILY_STANDUP_CHANNEL_ID } from "../server-ids";
67
import { fetchTextChannelById } from "../utils";
78

89
export async function initiateDailyStandup(
910
discordClient: Discord.Client,
1011
): Promise<void> {
12+
logger.info(`Initiating daily standup...`);
1113
const dailyStandupChannel = await fetchTextChannelById(
1214
discordClient,
1315
DAILY_STANDUP_CHANNEL_ID,

src/discord/bot/introduction.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,21 @@ async function isGuestUser(message: GuildMessage): Promise<boolean> {
2424
export async function handleIntroductionMessage(
2525
message: GuildMessage,
2626
): Promise<void> {
27+
logger.info(`Handling introduction message [${message.id}]...`);
28+
2729
const trimmedMessageLength = message.content.trim().length;
2830
if (trimmedMessageLength < 20) {
31+
logger.debug(`Introduction message [${message.id}] is too short`);
2932
await message.reply(
3033
"👋 Great to have you here! Please introduce yourself with a message that's at least 2️⃣0️⃣ characters long and I will give you full access to the server.",
3134
);
3235
return;
3336
}
3437

3538
try {
39+
logger.debug(
40+
`Introduction message [${message.id}] is valid. Removing the guest role...`,
41+
);
3642
const member = await message.guild.members.fetch(message.author.id);
3743
await member.roles.remove(GUEST_ROLE_ID);
3844
await message.reply(

0 commit comments

Comments
 (0)