You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js v14欢迎消息报错:member.guild.channels.cache.fetch不是函数

解决Discord.js v14中TypeError: member.guild.channels.cache.fetch is not a function错误

错误原因

  1. channels.cache无fetch方法:Discord.js v14里,member.guild.channels.cache是Collection实例,仅提供缓存操作方法(如get、has);fetch是GuildChannelManager(即member.guild.channels)的方法,用于从Discord API拉取频道数据。
  2. 重复监听事件:你的代码同时在index.js和guildMemberAdd.js中监听guildMemberAdd事件,会导致逻辑重复执行。
  3. 过时的嵌入类:v14已将MessageEmbed替换为EmbedBuilder,旧类可能引发兼容性问题。

修复步骤

1. 修正频道获取逻辑

将member.guild.channels.cache.fetch改为member.guild.channels.fetch,并将事件处理函数设为异步(因fetch是异步操作)。

2. 移除重复事件监听

删除index.js中直接定义的guildMemberAdd事件代码块,保留guildMemberAdd.js中的处理器即可。

3. 替换嵌入类

在guildMemberAdd.js中导入EmbedBuilder替代MessageEmbed。

修改后的代码

guildMemberAdd.js

const { EmbedBuilder, GuildMember } = require("discord.js")

module.exports = {
    name: "guildMemberAdd",

    /**
     * @param {GuildMember} member
     */
    async execute(member) { 
        try {
            // 从API获取目标频道
            const welcomeChannel = await member.guild.channels.fetch("1155899900161171586");
            
            // 发送欢迎消息
            await welcomeChannel.send({
                embeds: [
                    new EmbedBuilder()
                        .setTitle("Welcome")
                        .setDescription(`${member.toString()} joined the \`SeaMysics\`-Server`)
                        .setColor("#4ba511")
                        .setTimestamp()
                ]
            });
        } catch (error) {
            // 捕获错误便于调试
            console.error("发送欢迎消息失败:", error);
        }
    }
}

index.js(移除重复代码)

删除以下代码块:

client.on('guildMemberAdd', member => {
    member.guild.channels.cache.get('1155899900161171586').send({
        embeds: [
            new MessageEmbed()
                .setTitle("Welcome")
                .setDescription(`${member.toString()}` + 'joined the `SeaMysics`-Server')
                .setColor("#4ba511")
                .setTimestamp()]
        });
})

额外注意事项

  • 确保Discord开发者门户中,机器人已开启服务器成员特权(Privileged Gateway Intents下的Guild Members Intent),否则guildMemberAdd事件无法触发。
  • 检查机器人是否拥有目标频道的发送消息和嵌入链接权限,否则消息发送会失败。

内容的提问来源于stack exchange,提问作者TheWuschelGang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:27:53