Возникли проблемы при оформлении билета discord JS

#node.js #discord #discord.js

Вопрос:

возникли проблемы при оформлении билета, я не знаю, что я сделал, все выглядит правильно, было бы неплохо получить некоторую помощь. я не знаю, что я сделал не так. мне кажется, что что-то пошло не так с «message.guild.channels.create», когда он пытается его создать, он выдает мне код этой ошибки, и ошибка ниже

 module.exports = {
    name: "ticket",
    aliases: [],
    permissions: [],
    description: "open a ticket!",
    async execute(message, args, cmd, client, discord) {
        const channel = await message.guild.channels.create(`ticket: ${message.author.tag}`);

        channel.setParent("855596395783127081");

        channel.updateOverwrite(message.guild.id, {
            SEND_MESSAGE: false,
            VIEW_CHANNEL: false,
        });
        channel.updateOverwrite(message.author, {
            SEND_MESSAGE: true,
            VIEW_CHANNEL: true,
        });

        const reactionMessage = await channel.send("Thank you for contacting support!");

        try {
            await reactionMessage.react("🔒");
            await reactionMessage.react("⛔");
        } catch (err) {
            channel.send("Error sending emojis!");
            throw err;
        }

        const collector = reactionMessage.createReactionCollector(
            (reaction, user) => message.guild.members.cache.find((member) => member.id === user.id).hasPermission("ADMINISTRATOR"), { dispose: true }
        );

        collector.on("collect", (reaction, user) => {
            switch (reaction.emoji.name) {
                case "🔒":
                    channel.updateOverwrite(message.author, { SEND_MESSAGES: false });
                    break;
                case "⛔":
                    channel.send("Deleting this channel in 5 seconds!");
                    setTimeout(() => channel.delete(), 5000);
                    break;
            }
        });

        message.channel
            .send(`We will be right with you! ${channel}`)
            .then((msg) => {
                setTimeout(() => msg.delete(), 7000);
                setTimeout(() => message.delete(), 3000);
            })
            .catch((err) => {
                throw err;
            });
    },
};
 

Вот в чем ошибка

 PS C:UserslolzyOneDriveDesktopdiscordbot> node .
Cbs slave is online!
(node:19344) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'channels' of undefined
    at Object.execute (C:UserslolzyOneDriveDesktopdiscordbotcommandsticket.js:7:45)
    at module.exports (C:UserslolzyOneDriveDesktopdiscordboteventsguildmessage.js:10:26)
    at Client.emit (events.js:376:20)
    at MessageCreateAction.handle (C:UserslolzyOneDriveDesktopdiscordbotnode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UserslolzyOneDriveDesktopdiscordbotnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UserslolzyOneDriveDesktopdiscordbotnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:UserslolzyOneDriveDesktopdiscordbotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:UserslolzyOneDriveDesktopdiscordbotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
    at WebSocket.onMessage (C:UserslolzyOneDriveDesktopdiscordbotnode_moduleswslibevent-target.js:132:16)
    at WebSocket.emit (events.js:376:20)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:19344) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of 
an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:19344) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that 
are not handled will terminate the Node.js process with a non-zero exit code.
 

Комментарии:

1. message.guild является ли возврат неопределенным, вы проверили message , является ли допустимым объектом сообщения?

Ответ №1:

В нем говорится, что собственность гильдии не определена, это может быть связано с тем, что кто-то использует команду в DM, и именно поэтому вы не получаете гильдию. Поэтому вы можете добавить инструкцию if, чтобы проверить, использует ли пользователь команду на сервере

Вот пример:

 module.exports = {
    name: "ticket",
    aliases: [],
    permissions: [],
    description: "open a ticket!",
    async execute(message, args, cmd, client, discord) {
        if (!message.guild) return message.channel.send("You can't use this command in DM's");
      
      // Rest of the code
      
    }
};