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

Discord.js 频道创建函数报错:client.guild不存在问题求助

Discord.js 机器人频道创建报错:guild不存在或不是函数

错误原因分析

  1. client.guild属性不存在:Discord.js的客户端对象(client)没有直接的guild属性,正确管理服务器的是复数形式的client.guilds,代表机器人加入的所有服务器集合。
  2. 变量命名与逻辑混淆:代码中let role = client.guilds.cache.get("id");存在逻辑错误——client.guilds.cache.get()返回的是服务器对象,不是角色,变量名错误会导致后续权限配置混乱。
  3. @everyone角色获取错误:client.guild.roles.everyone写法错误,必须通过具体的服务器对象来获取@everyone角色。

修复步骤

  1. 修正服务器对象获取与命名:将获取服务器的代码变量名改为guild,并替换为实际的服务器ID:
    let guild = client.guilds.cache.get("你的服务器实际ID");
    
  2. 使用正确的服务器对象创建频道:将client.guild.channels.create替换为guild.channels.create,基于已获取的服务器对象操作。
  3. 修正@everyone角色的获取方式:把client.guild.roles.everyone改为guild.roles.everyone。
  4. 补全角色获取逻辑:原代码中role.id指向的是服务器对象,需单独获取目标角色,比如:
    let targetRole = guild.roles.cache.get("目标角色实际ID");
    
  5. 增加安全判断:添加guild存在的判断,避免因服务器未缓存或ID错误导致后续报错。
  6. 确保Permissions对象已导入:代码顶部需导入Discord.js的Permissions模块(如果未导入)。

修正后的完整代码

const { Permissions } = require('discord.js');

exports('runJS', (data) => {
    console.log(data.name);
    
    // 替换为实际的消息发送频道ID
    client.channels.cache.get(`你的消息频道ID`).send(data.name);
    
    // 替换为你的服务器实际ID
    let guild = client.guilds.cache.get("你的服务器ID");
    // 替换为目标角色的实际ID
    let targetRole = guild?.roles.cache.get("目标角色ID");
    
    if (data != null && guild && targetRole) {
        guild.channels.create("│💀│" + data.name, { 
            type: "GUILD_TEXT",
            parent: "1157076981159034880",
            permissionOverwrites: [
                {
                    id: targetRole.id,
                    allow: [Permissions.FLAGS.VIEW_CHANNEL],
                },
                {
                    id: data.id,
                    allow: [Permissions.FLAGS.VIEW_CHANNEL],
                },
                {
                    id: guild.roles.everyone,
                    deny: ['VIEW_CHANNEL']
                },
            ],
        });     
    }
});

额外注意事项

  • 所有占位的ID(服务器ID、频道ID、角色ID)必须替换为Discord后台获取的实际数值。
  • 如果机器人未加入目标服务器,client.guilds.cache.get()会返回undefined,需确保机器人已正确加入该服务器。

内容的提问来源于stack exchange,提问作者David Nicolas Gomez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:32:38