проблема с созданием роли и канала автоматически из личного сообщения с ботом - PullRequest
0 голосов
/ 05 февраля 2019

Не уверен, что создание канала и создание роли не работает внутри следующего кода, внизу.(РЕДАКТИРОВАТЬ: ничего не отправляется на консоль, и ничего не происходит с кодом. Это похоже на то, что он полностью игнорируется.) Это фрагмент кода, который пользователь A вызывает пользователя B. Пользователь B обменивается сообщениями, предупреждая их, что вызов былвыдается им через личное сообщение.Если вызов принят, я хочу, чтобы бот: 1) назначил роль специально для пользователя A и пользователя B с именем «Пользователь A против пользователя B» 2) возьмите пользователя A и пользователя B и поместите их обоих в эту новую роль и 3)Создайте поле битвы с именем «Пользователь A против пользователя B» внутри определенной категории на сервере, на котором работает бот.

Я не уверен, что проблема заключается в том, как бот пытается создать роль и канал вРазорвать, пока бот разговаривает с пользователем в личном сообщении, а не на сервере.Я думал, что использование переменной «server» в качестве идентификатора сервера поможет, но, похоже, он ничего не делает после сообщения accept.

// Awaits reply from user
if (message.channel.id === '541736552582086656') return target.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...`)
/// Problems start here
          function createChannel(message){
            var server = "SERVER ID";
            var name = `${target} vs ${challenger}`;
            message.guild.createRole({
                role: {
                    name: `${target} vs ${challenger}`,
                    color: "#00fffa",
                    permissions: [] }
            }).then(role => {
                target.addRole(role, name)
                challenger.addRole(role, name)
                .catch(error => client.catch(error))
            }).catch(error => client.catch(error))
            server.createChannel(Name, name).then(
                (channel) => {
                    channel.setParent("CATEGORY ID")
          })
        } // problems end here
        } else if (reply.content === 'deny') {
          reply.channel.send("You have ***denied *** the challenge.") 
        } else {
          reply.channel.send("Your response wasn't valid.");
        }
      })
   })
}

Мне было интересно, нужно ли мне заняться созданием канала и роли по-другому, поскольку он пытается быть сделан из личного сообщения, а не внутри сервера..

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

1 Ответ

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

Я думаю, что проблема в том, что вы создаете функцию с именем createChannel с кодом для создания роллов и каналов, но вы никогда не вызываете указанную функцию.

Вы можете либо вызвать функцию после того, как объявили ее, либо (что, на мой взгляд, лучше), вы можете удалить следующие строки

function createChannel(message){

} // problems end here

...