/[sudobot]/trunk/src/commands/information/RoleListCommand.ts
ViewVC logotype

Annotation of /trunk/src/commands/information/RoleListCommand.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 60 - (hide annotations)
Mon Jul 29 17:28:26 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 3285 byte(s)
Added -rolelist command
1 rakin 60 import { CommandInteraction, Message, Role } from 'discord.js';
2     import BaseCommand from '../../utils/structures/BaseCommand';
3     import DiscordClient from '../../client/Client';
4     import CommandOptions from '../../types/CommandOptions';
5     import InteractionOptions from '../../types/InteractionOptions';
6     import MessageEmbed from '../../client/MessageEmbed';
7     import getRole from '../../utils/getRole';
8    
9     export default class RoleListCommand extends BaseCommand {
10     supportsInteractions: boolean = true;
11    
12     constructor() {
13     super('rolelist', 'information', []);
14     }
15    
16     async run(client: DiscordClient, msg: Message | CommandInteraction, options: CommandOptions | InteractionOptions) {
17     let role: Role | null = null;
18    
19     if (options.isInteraction) {
20     if (options.options.getRole('role'))
21     role = <Role> options.options.getRole('role');
22     }
23     else {
24     if (options.args[0])
25     try {
26     role = <Role> await getRole(<Message> msg, options);
27    
28     if (!role) {
29     throw new Error();
30     }
31     }
32     catch (e) {
33     console.log(e);
34    
35     await msg.reply({
36     embeds: [
37     new MessageEmbed()
38     .setColor('#f14a60')
39     .setDescription('Failed to fetch role info. Maybe invalid role ID?')
40     ]
41     });
42    
43     return;
44     }
45     }
46    
47     if (!role) {
48     const roles = await msg.guild!.roles.cache.toJSON();
49     let str = ``;
50    
51     for await (const role of roles) {
52     if (role.id === msg.guild!.id)
53     continue;
54    
55     str += `**${role.name}**\nID: ${role.id}\nMembers: ${role.members.size}\nColor: ${role.hexColor}\n\n`;
56     }
57    
58     await msg.reply({
59     embeds: [
60     new MessageEmbed()
61     .setAuthor({
62     name: `Role List`
63     })
64     .setDescription(str)
65     ]
66     });
67     }
68     else {
69     await msg.reply({
70     embeds: [
71     new MessageEmbed()
72     .setAuthor({
73     name: `Role Information`
74     })
75     .setColor(role.hexColor)
76     .addFields([
77     {
78     name: 'Name',
79     value: role.name
80     },
81     {
82     name: 'Color',
83     value: role.hexColor
84     },
85     {
86     name: 'Members',
87     value: role.members.size + ''
88     },
89     {
90     name: 'Bot Role',
91     value: role.members.size === 1 && role.members.first()?.user.bot ? 'Yes' : 'No'
92     }
93     ])
94     ]
95     });
96     }
97     }
98     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26