首页 > 解决方案 > discord.js message.channel 不是函数

问题描述

我试图让我的机器人删除特定频道中不是图像的消息。

client.on("message", (message) => {
  let channel = client.channels.get(`642417479708049418`);
  if(!message.channel(channel)) {
    return
  } else {
  if(message.embeds.length > 0) {
    return
  } else {
    message.delete();
    message.channel.send("images only");
  }
}
});

错误表明 message.channel 不是函数。

标签: javascriptdiscord.js

解决方案


错误在!message.channel(channel),要验证通道是否是您想要的通道,因为您已经有了通道变量,只需比较两个 id,您还应该添加一个检查以查看消息是否来自机器人或不是,这样机器人就不会陷入删除自己的消息的循环中:

client.on("message", (message) => {
    if (message.author.bot) return;

    let channel = client.channels.get(`642417479708049418`);
    if (message.channel.id != channel.id) {
        return
    } else {
        if (message.embeds.length > 0) {
            return
        } else {
            message.channel.send("images only");
            message.delete();
        }
    }
});

此外,当您删除消息时,请message.delete();务必先发送您要发送的响应,请按以下顺序执行:

message.channel.send("images only");
message.delete();

推荐阅读