aboutsummaryrefslogtreecommitdiff
path: root/174bg/discord-bot/source/utilities/messageMembersByRoleName.js
blob: 0730c32187cdee68c65526ee5585c912b17c9b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 };
}