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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 74 - (show 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 import { CommandInteraction, InteractionCollector, Message, MessageActionRow, MessageButton, 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 supportsLegacy = false;
12
13 constructor() {
14 super('rolelist', 'information', []);
15 }
16
17 async run(client: DiscordClient, msg: CommandInteraction, options: InteractionOptions) {
18 let role: Role | null = null, page = 1;
19
20 if (options.options.getRole('role'))
21 role = <Role> options.options.getRole('role');
22
23 if (options.options.getInteger('page'))
24 page = <number> options.options.getInteger('page');
25
26 if (!role) {
27 const roles = await msg.guild!.roles.cache.toJSON();
28
29 let str = ``;
30 let limit = 15, i = 1, offset = (page - 1) * limit;
31
32 if (offset >= roles.length) {
33 await msg.reply({
34 content: "Invalid page number.",
35 ephemeral: true
36 });
37
38 return;
39 }
40
41 for await (const role of roles) {
42 if (role.id === msg.guild!.id)
43 continue;
44
45 i++;
46
47 if (offset >= (i - 1))
48 continue;
49
50 if ((limit + offset) < (i - 1))
51 break;
52
53 str += `${role.name} - ${role.id} - ${role.members.size} Members - ${role.hexColor}\n`;
54 }
55
56 await msg.reply({
57 content: "**Role List (" + page + ")**:\n\n```" + str + '```',
58 });
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