Ваш бот прослушивает все сообщения, включая его собственные. Попробуйте обернуть функцию отправки сообщения внутри оператора if, например,
client.on('message', msg => {
if (msg.author.bot) return; // Ignores anything sent by a bot account
if (msg.content.startsWith(prefix)) {
let replaced = msg.content.replace(prefix, ''); // This only occurs once.
if (replaced.toLowerCase().startsWith('d'))
timeVal = "d";
else if (replaced.toLowerCase().startsWith('w'))
timeVal = "w";
else if (replaced.toLowerCase().startsWith('m'))
timeVal = "m";
if (timeVal) {
msg.channel.send("test", {
files: [`https://finviz.com/chart.ashx?t=OMN&ty=c&ta=0&p=${timeVal}&s=l.png`]
});
timeVal = '';
}
}
});
Сначала он проверяет, отправляется ли бот ботом, и если это так, игнорируйте его. Затем проверьте, установлен ли timeVal
, затем попробуйте отправить сообщение. После отправки сообщения сбросьте timeVal
, чтобы оно не выполнялось всякий раз, когда сообщение начинается с префикса. Это сделано для того, чтобы не повторять попытку отправки, если после сообщения !
в сообщении не указано d, w или m.