javascript - Discord.js 不断发送相同的消息
问题描述
我有这段代码,我想做的是从 JSON 文件中获取信息并将其发送到不和谐服务器。问题是它不断地一次又一次地发送相同的消息。
async function fetch12(message, channel) {
url[0] = `https://youtube.googleapis.com/youtube/v3/playlistItemspart=snippet&maxResults=2&playlistId=UUxVDmCmgQMTUTWMeRZUYliw&key=${api_key}`;
url[1] = `https://youtube.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=2&playlistId=UUM_fQdoc0Jmd5mH3KLaDaXA&key=${api_key}`;
for (let skat = 0; skat < 2; skat++) {
var link_url = await fetch(url[skat]);
var fetched = await link_url.json();
search1 = JSON.stringify(fetched, null, 2);
await new_vid(message, channel);
}
}
function new_vid(message, channel) {
sa++;
console.log(sa);
videoId();
new_link = `https://www.youtube.com/watch?v=${video_link[0]}`; //works
get_channel_name();
date();
console.log("!start was activated");
if (last_date != dates[0] && new_link != last_link) {
last_date = dates[0];
last_link = new_link;
client.on("message", (message) => {
message.channel.send(`New video/live from ${channel_name}`);
message.channel.send(new_link);
});
}
}
client.on("message", (message) => {
if (message.content === "!*start") {
setInterval(() => {
fetch12(message, channel);
}, 600000);
}
});
解决方案
您在这里使用消息事件进行循环:
client.on("message", (message) => {
message.channel.send(`New video/live from ${channel_name}`);
message.channel.send(new_link);
});
因为您发送消息会触发消息事件,这会导致它再次发送消息来响应,所以要修复它,您只需检查消息的作者是否是这样的机器人:
client.on("message", (message) => {
if (message.author.bot) return;
message.channel.send(`New video/live from ${channel_name}`);
message.channel.send(new_link);
});