Проблемы с удалением полученных сообщений

Пытаюсь удалить сообщения от определенного пользователя, но ничего не происходит:

bot.js
client.on("message", (message) => {
            if (message.content === '$deleteuser') {

                message.channel.fetchMessages({limit: 10}).then(collected => { //collected is a Collection
                    collected.forEach(msg => {
                        if (message.author.id === '474851505908875266') {
                            message.delete(0);
                        }


                    });
                });
            }

        });

попробуйте показать сообщение, вы проходите условие, если «id»?

Vadim Hulevich 27.05.2019 14:32

@messerbill, message.delete() - это вызов API для удаления сообщения из истории сообщений о разногласиях, поэтому я не понимаю, почему это должно быть проблемой для повторения коллекции для достижения этой цели.

Gruntzy 27.05.2019 16:09

если это копирование/вставка вашего кода, я бы сказал, что проблема может исходить из вашего оператора «если»: вы проверяете идентификатор своей переменной message вместо msg. то же самое касается вызова delete().

Gruntzy 27.05.2019 17:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, ваша проблема возникает из-за вашего ошибочного использования message вместо msg внутри обратного вызова forEach() (как указал @Gruntzy). Как было объявлено, message — это параметр сообщения вашего события, а msg — это сообщение итерации forEach(). Поэтому, когда вы используете message внутри обратного вызова, вы взаимодействуете с исходным сообщением о событии.

Во-вторых, ваш код вызовет ограничение скорости из-за отдельных вызовов Message.delete(). Используйте TextChannel.bulkDelete().

Улучшенный код:

client.on('message', async message => {
  if (message.content === '$deleteuser') {
    try {
      const toDelete = [];

      const fetched = await message.channel.fetchMessages({ limit: 10 });
      fetched.forEach(msg => {
        if (msg.author.id === '474851505908875266') toDelete.push(msg.id);
      });

      await message.channel.bulkDelete(toDelete);
    } catch(err) {
      console.error(err);
    }
  }
});

не работает, ошибка: const delete = []; ^^^^^^ SyntaxError: Unexpected token delete at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:616:28) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:188:16) at bootstrap_node.js:609:3

versity 28.05.2019 08:08

delete — это ключевое слово в JavaScript, означающее, что вы не можете назначать ему переменные, поскольку оно зарезервировано. Попробуйте изменить имя переменной delete на другое.

Snel23 28.05.2019 08:45

+1 @Snel23, больше проблем :( if (msg.author.id === '474851505908875266') .push(msg.id); ^ SyntaxError: Unexpected token . at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:616:28) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32)

versity 28.05.2019 11:11

часть 2: at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:188:16) at bootstrap_node.js:609:3

versity 28.05.2019 11:11
.push должен вызываться для объекта массива, т.е. тот, кого ты переименовал
Snel23 28.05.2019 11:20

Другие вопросы по теме