Как исправить код, не перемещающий канал в категорию

#javascript #node.js #discord #discord.js

Вопрос:

Код создал категорию и канал и выдал мне эту ошибку: TypeError: Cannot read property 'hasOwnProperty' of undefined без перемещения канала в категорию Это код ошибки:

     const guild = message.guild;
    const channel = await guild.channels.create(`ticket: ${message.author.tag}`);
    let category = guild.channels.cache.find(c => c.name == "Tickets" amp;amp; c.type == "category")
    if (!category) {
   type: 'category',
   })
  .catch(console.error);
    }


    channel.setParent(category);
 

Ответ №1:

channel.setParent Вызов завершается неудачно на этой линии, так category как есть undefined . Похоже, у гильдии нет названного канала категории 'Tickets' .

Поскольку вы создаете канал, если он не существует, вы должны await его создать и переназначить category на вновь созданный канал для использования в channel.setParent вызове.

 if (!category) {
  category = await server.channels.create('Tickets', {
    type: 'category',
    // ...
  })
}

channel.setParent(category)
 

Кстати, похоже updateOverwrite , что это недопустимый вариант в server.channels.create вызове. Я думаю, так и должно быть permissionOverwrites . Проверьте документы.


Это не имеет отношения к вопросу, но я бы рекомендовал переименовать category categoryChannel для ясности.

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

1. Кроме того, я думаю, что на самом деле причина этой проблемы в том, что channel она недоступна для этой области, но трудно сказать, так как @Newbie не опубликовал форматированную текстовую версию своего кода

2. @Keimeno channel действительно в сфере применения. Проблема в том, что category есть undefined . Пожалуйста, дайте мне знать, если я что-то упущу.

3. @Новичок, не волнуйся. В следующий раз, когда вы опубликуете вопрос, пожалуйста, добавьте код и трассировку стека в виде текста, а не в виде изображений.

4. @Новичок, Спасибо. Кстати, похоже updateOverwrite , что это недопустимый вариант в create вызове.

5. Если вы проверите документы, вы увидите updateOverwrite , что это недопустимый вариант. Кстати, код внутри if блока неправильный — server.channels.create отсутствует.