【问题标题】:Discord.js V12 Sending an embed to a channel in a different guildDiscord.js V12 将嵌入发送到不同公会的频道
【发布时间】:2021-04-14 15:19:57
【问题描述】:

嗨,我正在制作一个命令,它将嵌入发送到具有 id 的频道,但是当在具有该频道的公会中使用该命令时该命令正常工作,但是当该命令在不同的公会中使用时,它会抛出错误“TypeError :无法读取未定义的属性“发送””有什么办法解决这个问题吗?我希望该命令也可以在其他公会中使用

const channel = message.guild.channels.cache.find(c => c.id === "746423099871985755")
                
                const exampleEmbed = new Discord.MessageEmbed()
                .setColor('#FFFF33')
                .setTitle(message.member.user.tag)
                .setAuthor(`Order ID: ${ticketID}`)
                .setDescription(order)
                .setThumbnail(message.author.avatarURL())
                .setTimestamp()
                .setFooter(`From ${message.guild.name} (${message.guild.id})`);
            
                channel.send(exampleEmbed);

【问题讨论】:

  • 你得到的错误是完全可以理解的,因为在其他公会上没有确切的 ID 频道。每个频道都有不同的 ID。

标签: node.js discord.js


【解决方案1】:

Message#guild 是当前公会。因此,如果您想将消息从另一个公会发送到频道,您需要从客户端的缓存中搜索该公会。你可以这样写:

const guild = message.client.guilds.cache.get("/* Your guild id */");
const channel = guild.channels.cache.get("/* Your channel id */");

你也可以做得更紧凑:

const channel = message.client.guilds.cache.get("/* Your guild id */").channels.cache.get("/* Your channel id */");

如果您想使用频道名称进行搜索:

const channel = message.client.guilds.cache.get("/* Your guild id */").channels.cache.find(c => c.name === "/* Channel name */");

【讨论】:

    【解决方案2】:

    由于 Discord 上的每个频道都有不同的 ID,因此您无法使用一个 ID 获得两个不同的频道对象。您可以改为使用频道名称(该频道在两个服务器中必须具有相同的名称),或者您可以手动对两个频道进行硬编码。

    例如

    // using names
    const channel = message.guild.channels.cache.find(c => c.name === "channel-name");
    
    // hardcoding IDs
    const channel = message.guild.channels.cache.find(c => c.id === "ID1" || c.id === "ID2");
    
    

    【讨论】:

      【解决方案3】:

      这也应该可以message.guild.channels.cache.get('GUILD_ID').send(embed);

      【讨论】:

        猜你喜欢
        • 2020-11-23
        • 2020-07-29
        • 2022-01-16
        • 2020-11-06
        • 2023-03-07
        • 2020-09-06
        • 2021-02-10
        • 2021-09-21
        • 2022-01-16
        相关资源
        最近更新 更多