McFree
@McFree
JS, TS, C#

Как отследить удаление сообщения автором этого сообщения?

Хотел проверять удаления сообщений в каналах через событие Events.GuildAuditLogEntryCreate. Как оказалось это событие не видит удаления сообщения самим автором. Есть какой-то костыль, чтобы увидеть такое удаление?

instance.client.on(Events.GuildAuditLogEntryCreate, async (auditLog) => {
        const { action, extra: channel, executorId, target} = auditLog;

        // Check for deleted messages.
        if (action === AuditLogEvent.MessageDelete) {
            auditLog = auditLog as GuildAuditLogsEntry<AuditLogEvent.MessageDelete, "Delete">;
            try {
                const actionExtra: {channel: TextChannel, count: number} = auditLog.extra as {channel: TextChannel, count: number};
                const author: User = auditLog.target as User;
                const guildId: string = actionExtra?.channel?.guildId;
                const channelId: string = actionExtra?.channel?.id;
                if (guildId) {
                    const guild: Guild = await instance.client.guilds.fetch(guildId);
                    instance.events.trigger(DeleteMessageEvent, instance, guild, executorId, author.id, channelId);
                }
            } catch (e) {
                logger.warn("Audit check error:" + e.message);
            }
        }
    });
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Syjalo
@Syjalo
Представьте себе бота
Нельзя точно определить, что сообщение было удалено именно автором. Можно слушать событие MessageDelete, но сообщение должно быть в кэше или должен быть включен партиал Message в опциях клиента.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы