首页 > 解决方案 > message.guild.createChannel 不是函数

问题描述

您好,我正在为我的服务器制作票务机器人。但是我遇到了错误message.guild.createChannel is not a function

编码

if (message.content.toLowerCase().startsWith(prefix + `openticket`)) {
    const reason = message.content.split(" ").slice(1).join(" ");
    if (message.guild.channels.cache.find(c => c === `ticket-${message.author.id}`)) return message.channel.send(`You already opened a ticket.`);
    message.guild.createChannel(`ticket-${message.author.id}`, "text").then(c => {
        let role2 = message.guild.roles.find("name", "@everyone");
        c.overwritePermissions(role, {
            SEND_MESSAGES: true,
            READ_MESSAGES: true
        });
        c.overwritePermissions(role2, {
            SEND_MESSAGES: false,
            READ_MESSAGES: false
        });
        c.overwritePermissions(message.author, {
            SEND_MESSAGES: true,
            READ_MESSAGES: true
        });
        message.channel.send(`:white_check_mark: Your ticket is opened, #${c.name}.`);
        const embed = new Discord.RichEmbed()
        .setColor(0xCF40FA)
        .addField(`Hey ${message.author.username}!`, `Your Ticket is opened.`)
        .setTimestamp();
        c.send({ embed: embed });
        message.delete();
    }).catch(console.error);
}

我认为代码太旧了。我从朋友那里得到了这个代码。

标签: javascriptnode.jsdiscord.js

解决方案


您的代码似乎是discord.js v11discord.js v12版本之间的混合。

v12介绍经理

要在公会上创建频道,您必须使用GuildChannelManager,这是v12这样做的方法(请参阅 GuildChannelManager.create 方法文档):

message.guild.channels.create(`ticket-${message.author.id}`, { type: 'text' }).then(c => {
    ...
});

有用的指南,显示 和 之间的v11变化v12


推荐阅读