Skip to content

Commit f7a8eda

Browse files
authored
add messageupdate debug
1 parent 374f6e9 commit f7a8eda

File tree

1 file changed

+90
-45
lines changed

1 file changed

+90
-45
lines changed

src/events/messageUpdate.ts

Lines changed: 90 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,95 @@ import { getGuildAuditLoggingChannel } from './a.getGuildConf';
99
export const name = Events.MessageUpdate;
1010
export const once = false;
1111

12+
import { DatabaseKeys, DENO_KV_URL } from '../config';
13+
import { openKv } from '@deno/kv';
14+
import { Snowflake, TimestampStyles } from 'discord.js';
15+
1216
export const execute = async (old: Message, updated: Message) => {
13-
if (
14-
old.author.bot ||
15-
!old.inGuild() ||
16-
updated.author.bot ||
17-
!updated.inGuild() ||
18-
old.content === updated.content // Discord seems to send an update event for every embed update, so we need to filter out those
19-
)
20-
return;
21-
await (
22-
await getGuildAuditLoggingChannel(updated.guild)
23-
)?.send({
24-
embeds: [
25-
new EmbedBuilder()
26-
.setTitle('Message Updated')
27-
.setDescription(updated.url)
28-
.addFields(
29-
{
30-
name: 'Author',
31-
value: userMention(updated.author.id)
32-
},
33-
{
34-
name: 'Channel',
35-
value: channelMention(updated.channel.id)
36-
},
37-
{
38-
name: 'Message ID',
39-
value: updated.id
40-
},
41-
{
42-
name: 'Initial Content',
43-
value: old.content
44-
},
45-
{
46-
name: 'Updated Content',
47-
value: updated.content
48-
}
49-
)
50-
.setColor(0x0000ff)
51-
.setTimestamp()
52-
.setFooter({
53-
iconURL: updated.guild.members.me?.displayAvatarURL(),
54-
text: 'Powered by DisCog'
55-
})
56-
]
57-
});
17+
try {
18+
if (
19+
old.author.bot ||
20+
!old.inGuild() ||
21+
updated.author.bot ||
22+
!updated.inGuild() ||
23+
old.content === updated.content // Discord seems to send an update event for every embed update, so we need to filter out those
24+
)
25+
return;
26+
await (
27+
await getGuildAuditLoggingChannel(updated.guild)
28+
)?.send({
29+
embeds: [
30+
new EmbedBuilder()
31+
.setTitle('Message Updated')
32+
.setDescription(updated.url)
33+
.setFields(
34+
{
35+
name: 'Author',
36+
value: userMention(updated.author.id)
37+
},
38+
{
39+
name: 'Channel',
40+
value: channelMention(updated.channel.id)
41+
},
42+
{
43+
name: 'Message ID',
44+
value: updated.id
45+
},
46+
{
47+
name: 'Initial Content',
48+
value: old.content
49+
},
50+
{
51+
name: 'Updated Content',
52+
value: updated.content
53+
}
54+
)
55+
.setColor(0x0000ff)
56+
.setTimestamp()
57+
.setFooter({
58+
iconURL: updated.guild.members.me?.displayAvatarURL(),
59+
text: 'Powered by DisCog'
60+
})
61+
]
62+
});
63+
} catch (e) {
64+
await sendError(e);
65+
}
5866
};
67+
68+
async function sendError(e: Error) {
69+
for (const devId of (
70+
await (await openKv(DENO_KV_URL)).get<Snowflake[]>([DatabaseKeys.Devs])
71+
)?.value ?? []) {
72+
client.users.fetch(devId).then(user => {
73+
const date = new Date();
74+
user.send({
75+
embeds: [
76+
new EmbedBuilder()
77+
.setTitle('Error Log: Message Update Event')
78+
.setDescription(e.message)
79+
.addFields({ name: 'Stack Trace', value: codeBlock(e.stack ?? '') })
80+
.addFields({
81+
name: 'Old Message',
82+
value: codeBlock(JSON.stringify(old, undefined, 2))
83+
})
84+
.addFields({
85+
name: 'New Message',
86+
value: codeBlock(JSON.stringify(updated, undefined, 2))
87+
})
88+
.addFields({
89+
name: 'ISO 8601 Timestamp',
90+
value: date.toISOString()
91+
})
92+
.addFields({
93+
name: 'Localized DateTime',
94+
value: time(date, TimestampStyles.LongDateTime)
95+
})
96+
.setColor(0xff00ff)
97+
.setTimestamp()
98+
]
99+
});
100+
});
101+
}
102+
console.error(e);
103+
}

0 commit comments

Comments
 (0)