首页 > 解决方案 > discord.js 代码无法正常工作

问题描述

我编写了代码,以便我可以代表一个不和谐的机器人编写代码。但是当我在主频道写作以便机器人将我的消息发送到另一个频道时,我的机器人会在我写的地方写,并开始发送垃圾邮件并添加自己的提及,尽管在代码中我指出的不是他而是写的人这条信息。

在此处输入图像描述

这就是代码的样子。

bot.on('message', async message => {
    if (message.channel.id === "735573900251103244") {
      let csl1 = message.channel.name.split("-")[0];
      let csl2 = message.channel.name.split("-")[1];
      let logs = bot.guilds.cache.get("611212397226491904").channels.cache.get("611215326566416416");
      if (message.author.id === "546359252575322122") {
        message.channel.send(message.content);
      } else {
        message.channel.send(`<@!${message.author.id}>` + `${message.content}`);
      }
      return;
    }
    if (message.author.bot) return;
    if (message.channel.type === "dm") return;
    let args = message.content.slice(prefix.length).trim().split(' ');
    let help = args.shift().toLowerCase();
    let cmd;
    if (!message.content.startsWith(prefix)) return;
    if(bot.commands.has(help)) {
      cmd = bot.commands.get(help);
    } else {
      cmd = bot.commands.get(bot.aliases.get(help));
    }
    if (cmd) cmd.run(bot, message, args);
});

标签: discord.js

解决方案


您必须将您对 message.author.bot 的检查重新排序到函数的开头,如 seblor 所述。

此外,message.channel指的是机器人接收消息的通道。为了将消息发送到不同的通道,您必须执行以下操作:

// https://discord.js.org/#/docs/main/stable/class/ChannelManager?scrollTo=fetch
bot.channels.fetch(targetchannelid).then((chan) => {
    chan.send("blah blah blah");
});

推荐阅读