首页 > 解决方案 > 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);
    }
});

标签: javascriptnode.jsdiscorddiscord.js

解决方案


您在这里使用消息事件进行循环:

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);
});

推荐阅读