diff options
Diffstat (limited to '174bg/discord-bot/source/utilities/messageMembersByRoleName.js')
| -rw-r--r-- | 174bg/discord-bot/source/utilities/messageMembersByRoleName.js | 30 |
1 files changed, 30 insertions, 0 deletions
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 }; +} |
