Если я набираю pingtest, мой бот снова и снова отправляет сообщение о внедрении (бесконечный цикл)
if (message.content='pingtest') {
message.channel.send({embed: {
color: 000000,
author: {
name: client.user.username,
icon_url: client.user.avatarURL
},
title: "A RAID HAS BEGUN (for the Dark Side)",
description: "",
fields: [{
name: "------------------------------",
value:"Write !raid to enter."
}
],
footer: {
icon_url: client.user.avatarURL,
}
}
});
}
Можете ли вы добавить больше вашего кода?
@Jamesm с любым сообщением
Не могли бы вы попробовать if (message.content ==='pingtest') для меня и посмотреть, сработает ли это?
Проблема: В вашем заявлении if
вы используете оператор присваивания, =
.
Решение: Вместо этого используйте оператор равенства (т.е. ===
) для сравнения message.content
.
Объяснение: Прямо сейчас ваш код параметрmessage.content
вместо сравнение. Это означает, что независимо от того, что такое message.content
, вы получаете ожидаемый результат «пинг-теста». Что касается зацикливания, я предполагаю, что вы разрешаете сообщения от других ботов в своем сообщении. Поэтому, когда бот видит собственное сообщение, он снова запускает тот же ошибочный код, создавая цепную реакцию.
Пересмотренный код:
if (message.author.bot) return; // bots will no longer trigger a command
if (message.content === 'pingtest') { // comparing message.content with ===
// < your code for the 'pingtest' command >
}
вам нужно сделать вставку для
if (message.content.startsWith('pingtest'))
let embed = new Discord.Embed
.setColor('color')
.setTitle('title')
.setAuthor(`${client.user.username}`)
.setDescreption('Descreption')
.addField('Field)
message.channel.send(embed)
срабатывает ли цикл, если отправляется сообщение с «pingtest», или он срабатывает, если отправляется какое-либо сообщение?