/[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 74 - (hide annotations)
Mon Jul 29 17:28:29 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 3039 byte(s)
Fixed rolelist command
1 rakin 74 import { CommandInteraction, InteractionCollector, Message, MessageActionRow, MessageButton, Role } from 'discord.js';
2 rakin 60 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 rakin 74 supportsLegacy = false;
12 rakin 60
13     constructor() {
14     super('rolelist', 'information', []);
15     }
16    
17 rakin 74 async run(client: DiscordClient, msg: CommandInteraction, options: InteractionOptions) {
18     let role: Role | null = null, page = 1;
19 rakin 60
20 rakin 74 if (options.options.getRole('role'))
21     role = <Role> options.options.getRole('role');
22 rakin 60
23 rakin 74 if (options.options.getInteger('page'))
24     page = <number> options.options.getInteger('page');
25    
26 rakin 60 if (!role) {
27     const roles = await msg.guild!.roles.cache.toJSON();
28 rakin 74
29 rakin 60 let str = ``;
30 rakin 74 let limit = 15, i = 1, offset = (page - 1) * limit;
31 rakin 60
32 rakin 74 if (offset >= roles.length) {
33     await msg.reply({
34     content: "Invalid page number.",
35     ephemeral: true
36     });
37    
38     return;
39     }
40    
41 rakin 60 for await (const role of roles) {
42     if (role.id === msg.guild!.id)
43     continue;
44    
45 rakin 74 i++;
46    
47     if (offset >= (i - 1))
48     continue;
49    
50     if ((limit + offset) < (i - 1))
51     break;
52    
53 rakin 72 str += `${role.name} - ${role.id} - ${role.members.size} Members - ${role.hexColor}\n`;
54 rakin 60 }
55    
56     await msg.reply({
57 rakin 74 content: "**Role List (" + page + ")**:\n\n```" + str + '```',
58 rakin 60 });
59     }
60     else {
61     await msg.reply({
62     embeds: [
63     new MessageEmbed()
64     .setAuthor({
65     name: `Role Information`
66     })
67     .setColor(role.hexColor)
68     .addFields([
69     {
70     name: 'Name',
71     value: role.name
72     },
73     {
74     name: 'Color',
75     value: role.hexColor
76     },
77     {
78     name: 'Members',
79     value: role.members.size + ''
80     },
81     {
82     name: 'Bot Role',
83     value: role.members.size === 1 && role.members.first()?.user.bot ? 'Yes' : 'No'
84     }
85     ])
86     ]
87     });
88     }
89     }
90     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26