client.catch не является функцией, и роль продолжает создавать «новую роль» вместо имени, которое я указываю? - PullRequest
0 голосов
/ 06 февраля 2019

Я мог просто упустить что-то простое, но у меня никогда не было этой ошибки раньше, и я не думаю, что отредактировал ее достаточно, чтобы вызвать эту проблему, так как она была последней функциональной.В приведенном ниже блоке кода появляется сообщение об ошибке в верхней части файла:

(node:17592) UnhandledPromiseRejectionWarning: TypeError: client.catch is not a function

Я указал client = new Discord.Client();

Другая проблема, с которой я столкнулся, заключается в том, что я пытаюсь получитьроль, которую бот выполняет как имя двух игроков / пользователей (претендент против формата цели) после того, как цель приняла вызов, поставленный претендентом.Вместо этого он создает роль с именем «новая роль».Любая помощь с любой из этих проблем?

if (message.channel.id === '541736552582086656') return challenged.send("Do you accept the challenge? Please reply with 'accept' or 'deny'.")
  .then((newmsg) => {
    newmsg.channel.awaitMessages(response => response.content, {
      max: 1,
      time: 150000,
      errors: ['time'],
    }).then((collected) => {
        // Grabs the first (and only) message from the collection.
        const reply = collected.first();

        if (reply.content === 'accept'){
          reply.channel.send(`You have ***accepted *** the challenge from ${challenger}. Please wait while your battlefield is made...`);
          message.author.send(`${target} has accepted your challenge! Please wait while the channel is made for your brawl...`)
            var server = message.guild;
            var permsName = `${target} vs ${challenger}`;
            var name = `${target} vs ${challenger}`;
            message.guild.createRole({
                data: {
                    name: permsName,
                    hoist: true,
                    color: "#00fffa",
                    permissions: [] }
            }).then(role => {
                target.addRole(data, permsName)
                challenger.addRole(role, permsName)


                // client.catch error occurring below
                .catch(error => client.catch(error))
            }).catch(error => client.catch(error)).then(
            server.createChannel(name, "text")).then(
                (channel) => {
                    channel.setParent("542070913177485323")
          })
        } else if (reply.content === 'deny') {
          reply.channel.send("You have ***denied *** the challenge.") 
        } else {
          reply.channel.send("Your response wasn't valid.");
        }
      })
   })
}
module.exports.help = {
    name: "challenge"
}

Я попытался найти проблему, и я не вижу ничего, что помогло бы до сих пор ни с одной проблемой.Они могут быть связаны, так как подвох после добавления роли?Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 06 февраля 2019

Интересно, есть ли шаблон, который вы скопировали для этого бота?У объекта Discord.Client нет никакого метода catch, поэтому вызов client.catch() не будет работать.

Для пояснения, это нормально:

challenger.addRole(role, permsName)
.catch(error => /* do something with this error */);

Что вы можете сделатьделать с ошибкой?Вы можете распечатать его на консоли, я полагаю:

challenger.addRole(role, permsName)
.catch(error => console.error(error));

Но вы не можете вызвать client.catch(error), потому что это не настоящий метод - вы можете просмотреть документы для объекта Client здесь.

Что касается имени роли, у вас просто небольшая ошибка: вы не хотите заключать ваш объект параметров в { data: }, ваш объект параметров - это данные.Просто передайте их напрямую, вот так:

message.guild.createRole({
    name: permsName,
    hoist: true,
    color: "#00fffa",
    permissions: []
}).then(role => {

Надеюсь, это поможет!

...