-
Notifications
You must be signed in to change notification settings - Fork 2
/
info.native.ts
126 lines (119 loc) · 4.03 KB
/
info.native.ts
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// native file, if you want edit it, remove the "native" suffix from the filename
import * as app from "#app"
import time from "tims"
export default new app.Command({
name: "info",
description: "Get information about bot",
flags: [
{
name: "dependencies",
description: "Show dependencies",
aliases: ["deps", "all"],
flag: "d",
},
],
async run(message) {
const conf = app.packageJSON
const databaseClient = app.getDatabaseDriverName()
const systemMessageOptions: Partial<app.SystemMessageOptions> = {
description: conf.description ?? "No description",
author: {
name: `Information about ${message.client.user.tag}`,
iconURL: message.client.user?.displayAvatarURL(),
},
timestamp: new Date(),
fields: [
{
name: conf.name,
value: await app.code.stringify({
lang: "yml",
content: [
`author: ${
message.client.users.resolve(app.env.BOT_OWNER)!.username
}`,
`uptime: ${time.duration(app.uptime(), {
format: "second",
maxPartCount: 2,
})}`,
`memory: ${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
2,
)}mb`,
`ping: ${message.client.ws.ping}ms`,
`database: ${databaseClient}@${app.packageJSON.dependencies?.[databaseClient] ?? "unknown"}`,
`node: ${process.version}`,
].join("\n"),
}),
inline: true,
},
{
name: "Cache",
value: await app.code.stringify({
lang: "yml",
content: [
`guilds: ${message.client.guilds.cache.size}`,
`users: ${message.client.users.cache.size}`,
`members: ${message.client.guilds.cache.reduce((acc, guild) => {
return acc + guild.members.cache.size
}, 0)}`,
`channels: ${message.client.channels.cache.size}`,
`roles: ${message.client.guilds.cache.reduce((acc, guild) => {
return acc + guild.roles.cache.size
}, 0)}`,
`messages: ${message.client.channels.cache.reduce(
(acc, channel) => {
return (
acc +
(channel.isTextBased() ? channel.messages.cache.size : 0)
)
},
0,
)}`,
].join("\n"),
}),
inline: true,
},
],
}
if (message.args.dependencies)
systemMessageOptions.fields?.push(
{
name: app.blankChar,
value: app.blankChar,
inline: false,
},
{
name: "Dependencies",
value:
conf.dependencies && Object.keys(conf.dependencies).length > 0
? await app.code.stringify({
lang: "yml",
content: Object.entries(conf.dependencies)
.map(([name, version]) => {
return `${name.replace(/@/g, "")}: ${version}`
})
.join("\n"),
})
: "No dependencies",
inline: true,
},
{
name: "Dev dependencies",
value:
conf.devDependencies && Object.keys(conf.devDependencies).length > 0
? await app.code.stringify({
lang: "yml",
content: Object.entries(conf.devDependencies)
.map(([name, version]) => {
return `${name.replace(/@/g, "")}: ${version}`
})
.join("\n"),
})
: "No dev dependencies",
inline: true,
},
)
return message.channel.send(
await app.getSystemMessage("default", systemMessageOptions),
)
},
})