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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 291 - (show annotations)
Mon Jul 29 17:29:23 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 2953 byte(s)
feat: add guild lookup command
1 import { formatDistanceToNowStrict } from "date-fns";
2 import { Message, Interaction, CacheType, CommandInteraction, Guild, GuildPreview } from "discord.js";
3 import Client from "../../client/Client";
4 import MessageEmbed from "../../client/MessageEmbed";
5 import CommandOptions from "../../types/CommandOptions";
6 import InteractionOptions from "../../types/InteractionOptions";
7 import { emoji } from "../../utils/Emoji";
8 import BaseCommand from "../../utils/structures/BaseCommand";
9
10 export default class GuildLookupCommand extends BaseCommand {
11 constructor() {
12 super("guildlookup", "information", ["glookup", "guild"]);
13 }
14
15 async run(client: Client, message: CommandInteraction<CacheType> | Message<boolean>, options: CommandOptions | InteractionOptions): Promise<void> {
16 if (!options.isInteraction && options.args[0] === undefined) {
17 await message.reply(`${emoji('error')} You must provide the guild/server ID to lookup.`);
18 return;
19 }
20
21 const inputID = options.isInteraction ? options.options.getString("guild_id")! : options.args[0];
22 let guild: GuildPreview | undefined;
23
24 try {
25 guild = await client.fetchGuildPreview(inputID);
26
27 if (!guild) {
28 guild = undefined;
29 }
30 }
31 catch (e) {
32 console.log(e);
33 }
34
35 if (!guild) {
36 await message.reply(`${emoji('error')} No guild/server was found with that ID or the guild isn't a public server.`);
37 return;
38 }
39
40 await message.reply({
41 embeds: [
42 new MessageEmbed({
43 author: {
44 name: guild.name,
45 iconURL: guild.iconURL() ?? undefined
46 },
47 description: guild.description ?? '*No description available*',
48 fields: [
49 {
50 name: "Approximate Member Count",
51 value: guild.approximateMemberCount + '',
52 inline: true
53 },
54 {
55 name: "Approximate Presence Count",
56 value: guild.approximatePresenceCount + '',
57 inline: true
58 },
59 {
60 name: "Created",
61 value: `${guild.createdAt.toLocaleString()} (${formatDistanceToNowStrict(guild.createdAt, { addSuffix: true })})`,
62 },
63 ],
64 thumbnail: guild.splashURL() ? {
65 url: guild.splashURL()!
66 } : undefined,
67 footer: {
68 text: `${guild.id}`
69 }
70 })
71 .setTimestamp()
72 ]
73 });
74 }
75 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26