From 4cccbdda3496aad74bdb3b4b2ad746f4367b13d9 Mon Sep 17 00:00:00 2001 From: "Alex Pooley (@zuedev)" Date: Thu, 23 Jul 2026 22:39:33 +0100 Subject: opti refactor --- .../source/utilities/messageMembersByRoleName.js | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 174bg/discord-bot/source/utilities/messageMembersByRoleName.js (limited to '174bg/discord-bot/source/utilities/messageMembersByRoleName.js') diff --git a/174bg/discord-bot/source/utilities/messageMembersByRoleName.js b/174bg/discord-bot/source/utilities/messageMembersByRoleName.js new file mode 100644 index 0000000..0730c32 --- /dev/null +++ b/174bg/discord-bot/source/utilities/messageMembersByRoleName.js @@ -0,0 +1,30 @@ +/** + * Messages all members of a specific role in a Discord guild by the role's name. + * + * @param {Guild} guild The Discord guild. + * @param {string} roleName The name of the role. + * @param {string} message The message to send. + * + * @returns {Promise<{successes: Array, failures: Array}>} The results of the messaging attempts. + */ +export default async function messageMembersByRoleName(guild, roleName, message) { + const role = guild.roles.cache.find( + (role) => role.name.toLowerCase() === roleName.toLowerCase(), + ); + + if (!role) throw new Error(`Role "${roleName}" not found.`); + + let successes = []; + let failures = []; + + for (const member of role.members.values()) { + try { + let result = await member.send(message); + successes.push(result); + } catch (error) { + failures.push({ member, error }); + } + } + + return { successes, failures }; +} -- cgit v1.2.3