Astroreen
@Astroreen
Юный начинающий программист

Как Discord bot может удалить сообщение через минуту?

Доброго времени суток, мне хочется удалять сообщение после его отправки через определённый промежуток времени.
По мимо этого мне не ясно, по истечению этого времени, будет удалятся последнее сообщение в канале, если так то наверно нужно указывать айди сообщения? В любом случае, я пока не нашёл ответа на свой вопрос.
Подскажите?
  • Вопрос задан
  • 2361 просмотр
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега Боты
Javascript-разработчик
как вы напишете код, так он и будет выполняться, без лишней магии.
message.channel.send().then(msg => {
    msg.delete({ timeout: 60000 })
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Israfil22
Если вы получаете сообщение из события 'message', то в обработчик этого события передается объект-сообщение.
У него доступен метод delete.
Функция для создания отложенной процедуры в js - setTimeout().

Если объект сообщение не доступен по какой-то причине, его, соответственно, нужно получить.
У каждой сущности Discord API есть свой уникальный ключ. У роли, юзера, и даже сообщения.
Судя по вопросу, речь идет об конкретном сообщении.

Если вы уже ранее имели в распоряжении объект message, запишите его поле id куда-то.
// channel - объект канала, snowflake - id сообщения
channel.messages.fetch(snowflake)
    .then( message => message.delete() )

Не забудьте реализовать проверку на undefined в then и остальные кейсы.

Если сообщение ранее нигде ранее не появлялось (ни в одном обработчике событий, таких как message), тогда придется искать среди сообщений канала.
Либо динамически
Либо из кэша
Ответ написан
@Vadim087
можно так

msg.delete( 60000);

можно

if (msg.author.id === " id пользователя " ) { msg.delete( 60000);}

можно

if (msg.author.id === " id пользователя " || " другие пользователи " ) { msg.delete( время в миллисекундах );}

бонус

задержка вывода сообщения 5 сек

setTimeout(() => {

msg.reply( " " )
// console.log ( " " );


} , 5000 );
}


});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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