From 1374128306e7c443240696c60caa020ad114a9a0 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 17:49:12 +0200 Subject: [PATCH 1/9] Remove old verified when verifying --- src/commands/message/message.handler.ts | 24 +++++++++++------------- src/commands/verify/subcommands/util.ts | 5 +++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/commands/message/message.handler.ts b/src/commands/message/message.handler.ts index 7cc663b..b939165 100644 --- a/src/commands/message/message.handler.ts +++ b/src/commands/message/message.handler.ts @@ -36,19 +36,17 @@ export const handleMessage = async ( let numSent = 0; let numFailed = 0; - await Promise.allSettled( - targetMembers.map(async (member) => { - try { - const dm = await member.createDM(true); - await dm.send({ content, files }); - numSent++; - await interaction.editReply(`Amount of DMs sent: ${numSent}`); - } catch (err) { - console.error(err); - numFailed++; - } - }) - ); + targetMembers.forEach(async (member) => { + try { + const dm = await member.createDM(true); + await dm.send({ content, files }); + numSent++; + await interaction.editReply(`Amount of DMs sent: ${numSent}`); + } catch (err) { + console.error(err); + numFailed++; + } + }) if (numFailed === 0) { await interaction.editReply( diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index d19cff6..d8d1bf7 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -1,5 +1,7 @@ import { Guild, User } from "discord.js"; import { + hasRole, + removeRole, setExternRole, setPingRoles, setRoleVerified, @@ -31,6 +33,9 @@ export const verifyUser = async ( await setYearRoles(user, yearRole, guild); const alias = mapYearToAlias(year); if (alias) await handleChannelAlias(guild, user, alias, joinChannel); + + if (await hasRole(user, "old verified", guild)) + await removeRole(user, "old verified", guild); } else setExternRole(user, guild); await setPingRoles(user, guild); From ef6b493a6eadd33efddf45600afab0910f2d9d25 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 18:08:21 +0200 Subject: [PATCH 2/9] Sleep between messages --- src/commands/message/message.handler.ts | 2 ++ src/shared/utils/channel-utils.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/commands/message/message.handler.ts b/src/commands/message/message.handler.ts index b939165..095b901 100644 --- a/src/commands/message/message.handler.ts +++ b/src/commands/message/message.handler.ts @@ -1,6 +1,7 @@ import { Role, Snowflake } from "discord.js"; import { GuildChatInputCommandInteraction } from "../../shared/types/GuildChatInputCommandType"; import { MessageVariables } from "./message.variables"; +import { sleep } from "../../shared/utils/channel-utils"; export const handleMessage = async ( interaction: GuildChatInputCommandInteraction @@ -42,6 +43,7 @@ export const handleMessage = async ( await dm.send({ content, files }); numSent++; await interaction.editReply(`Amount of DMs sent: ${numSent}`); + sleep(1000); } catch (err) { console.error(err); numFailed++; diff --git a/src/shared/utils/channel-utils.ts b/src/shared/utils/channel-utils.ts index 8a10bd2..82697d5 100644 --- a/src/shared/utils/channel-utils.ts +++ b/src/shared/utils/channel-utils.ts @@ -215,3 +215,5 @@ export async function getAllCourseChannels( .mapValues((channel) => channel as CourseChannel); return courseChannels; } + +export const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); From 40c12e4b2dae35cb676ce9036354a5fa5882dc51 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 18:10:59 +0200 Subject: [PATCH 3/9] Add return type on sleep function --- src/shared/utils/channel-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/utils/channel-utils.ts b/src/shared/utils/channel-utils.ts index 82697d5..e5c13a0 100644 --- a/src/shared/utils/channel-utils.ts +++ b/src/shared/utils/channel-utils.ts @@ -216,4 +216,4 @@ export async function getAllCourseChannels( return courseChannels; } -export const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); +export const sleep = (ms: number): Promise => new Promise((r) => setTimeout(r, ms)); From ec69c725797a163d42b2eeae39cda043505117cb Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 18:15:53 +0200 Subject: [PATCH 4/9] PRETTIER --- src/commands/message/message.handler.ts | 2 +- src/commands/verify/subcommands/util.ts | 2 +- src/shared/utils/channel-utils.ts | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/commands/message/message.handler.ts b/src/commands/message/message.handler.ts index 095b901..325d540 100644 --- a/src/commands/message/message.handler.ts +++ b/src/commands/message/message.handler.ts @@ -48,7 +48,7 @@ export const handleMessage = async ( console.error(err); numFailed++; } - }) + }); if (numFailed === 0) { await interaction.editReply( diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index d8d1bf7..794274f 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -33,7 +33,7 @@ export const verifyUser = async ( await setYearRoles(user, yearRole, guild); const alias = mapYearToAlias(year); if (alias) await handleChannelAlias(guild, user, alias, joinChannel); - + if (await hasRole(user, "old verified", guild)) await removeRole(user, "old verified", guild); } else setExternRole(user, guild); diff --git a/src/shared/utils/channel-utils.ts b/src/shared/utils/channel-utils.ts index e5c13a0..3eab485 100644 --- a/src/shared/utils/channel-utils.ts +++ b/src/shared/utils/channel-utils.ts @@ -216,4 +216,5 @@ export async function getAllCourseChannels( return courseChannels; } -export const sleep = (ms: number): Promise => new Promise((r) => setTimeout(r, ms)); +export const sleep = (ms: number): Promise => + new Promise((r) => setTimeout(r, ms)); From a2c683ec437604e899348ea6e9ee8d5f43decb28 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 23:07:32 +0200 Subject: [PATCH 5/9] Don't add extern if user has year role --- src/commands/verify/subcommands/util.ts | 13 +++++++++---- src/shared/utils/roles.ts | 7 +++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index 794274f..af96683 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -1,5 +1,6 @@ import { Guild, User } from "discord.js"; import { + hasAnyYearRole, hasRole, removeRole, setExternRole, @@ -29,10 +30,14 @@ export const verifyUser = async ( await setRoleVerified(user, guild); const { year, yearRole } = await extractYearFromUser(kthId); - if (yearRole && year) { - await setYearRoles(user, yearRole, guild); - const alias = mapYearToAlias(year); - if (alias) await handleChannelAlias(guild, user, alias, joinChannel); + const userHasYearRole = await hasAnyYearRole(user, guild); + + if (yearRole && year || userHasYearRole) { + if (yearRole && year) { + await setYearRoles(user, yearRole, guild); + const alias = mapYearToAlias(year); + if (alias) await handleChannelAlias(guild, user, alias, joinChannel); + } if (await hasRole(user, "old verified", guild)) await removeRole(user, "old verified", guild); diff --git a/src/shared/utils/roles.ts b/src/shared/utils/roles.ts index 2b8f832..418ab25 100644 --- a/src/shared/utils/roles.ts +++ b/src/shared/utils/roles.ts @@ -145,3 +145,10 @@ export async function getRoles(user: User, guild: Guild): Promise { const guildMember = await guild.members.fetch(user); return guildMember.roles.cache.map((role) => role.name); } + +export async function hasAnyYearRole(user: User, guild: Guild): Promise { + const member = await guild.members.fetch(user.id); + return !!member && member.roles.cache.some(role => + new RegExp("^D-[0-9]{2}$").test(role.name) + ); +} From 5607df13dd790a30f316efaccd68b701cd8a6a0b Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 23:13:13 +0200 Subject: [PATCH 6/9] Oopsie on merge conflict resolve --- src/commands/verify/subcommands/util.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index 25d83a4..af96683 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -29,6 +29,7 @@ export const verifyUser = async ( ); await setRoleVerified(user, guild); + const { year, yearRole } = await extractYearFromUser(kthId); const userHasYearRole = await hasAnyYearRole(user, guild); if (yearRole && year || userHasYearRole) { From 3c00a44e5ed12965bb2bb0c1186cd2c20f237a8a Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Thu, 19 Sep 2024 23:18:19 +0200 Subject: [PATCH 7/9] PRREETTTIEEER HAHAHAHAH --- src/commands/verify/subcommands/util.ts | 5 +++-- src/shared/utils/roles.ts | 12 +++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index af96683..b65428c 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -32,11 +32,12 @@ export const verifyUser = async ( const { year, yearRole } = await extractYearFromUser(kthId); const userHasYearRole = await hasAnyYearRole(user, guild); - if (yearRole && year || userHasYearRole) { + if ((yearRole && year) || userHasYearRole) { if (yearRole && year) { await setYearRoles(user, yearRole, guild); const alias = mapYearToAlias(year); - if (alias) await handleChannelAlias(guild, user, alias, joinChannel); + if (alias) + await handleChannelAlias(guild, user, alias, joinChannel); } if (await hasRole(user, "old verified", guild)) diff --git a/src/shared/utils/roles.ts b/src/shared/utils/roles.ts index 418ab25..aae6223 100644 --- a/src/shared/utils/roles.ts +++ b/src/shared/utils/roles.ts @@ -146,9 +146,15 @@ export async function getRoles(user: User, guild: Guild): Promise { return guildMember.roles.cache.map((role) => role.name); } -export async function hasAnyYearRole(user: User, guild: Guild): Promise { +export async function hasAnyYearRole( + user: User, + guild: Guild +): Promise { const member = await guild.members.fetch(user.id); - return !!member && member.roles.cache.some(role => - new RegExp("^D-[0-9]{2}$").test(role.name) + return ( + !!member && + member.roles.cache.some((role) => + new RegExp("^D-[0-9]{2}$").test(role.name) + ) ); } From bb43b742f8cd557ebcd463348367cb9cbd00a724 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Sun, 22 Sep 2024 18:23:12 +0200 Subject: [PATCH 8/9] Remove "old verified" for everyone verifying --- src/commands/verify/subcommands/util.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index b65428c..2f7745a 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -32,17 +32,16 @@ export const verifyUser = async ( const { year, yearRole } = await extractYearFromUser(kthId); const userHasYearRole = await hasAnyYearRole(user, guild); - if ((yearRole && year) || userHasYearRole) { - if (yearRole && year) { - await setYearRoles(user, yearRole, guild); - const alias = mapYearToAlias(year); - if (alias) - await handleChannelAlias(guild, user, alias, joinChannel); - } - - if (await hasRole(user, "old verified", guild)) - await removeRole(user, "old verified", guild); - } else setExternRole(user, guild); + if (yearRole && year) { + await setYearRoles(user, yearRole, guild); + const alias = mapYearToAlias(year); + if (alias) + await handleChannelAlias(guild, user, alias, joinChannel); + } else if (!userHasYearRole) + setExternRole(user, guild); await setPingRoles(user, guild); + + if (await hasRole(user, "old verified", guild)) + await removeRole(user, "old verified", guild); }; From f9196184d1f3d25ebbbc0a13c38d1e6893d3f6d9 Mon Sep 17 00:00:00 2001 From: Benjaneb Date: Sun, 22 Sep 2024 18:39:42 +0200 Subject: [PATCH 9/9] Prettier --- src/commands/verify/subcommands/util.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/commands/verify/subcommands/util.ts b/src/commands/verify/subcommands/util.ts index 2f7745a..d72d2f3 100644 --- a/src/commands/verify/subcommands/util.ts +++ b/src/commands/verify/subcommands/util.ts @@ -35,10 +35,8 @@ export const verifyUser = async ( if (yearRole && year) { await setYearRoles(user, yearRole, guild); const alias = mapYearToAlias(year); - if (alias) - await handleChannelAlias(guild, user, alias, joinChannel); - } else if (!userHasYearRole) - setExternRole(user, guild); + if (alias) await handleChannelAlias(guild, user, alias, joinChannel); + } else if (!userHasYearRole) setExternRole(user, guild); await setPingRoles(user, guild);