与机器人从私人消息自动创建角色和频道有关的问题

时间:2019-02-05 13:40:27

标签: node.js roles channel discord.js

不确定在下面的代码中如何创建频道和创建角色在底部。 (编辑:什么都没有发送到控制台,代码也没有发生任何变化。就像完全被忽略了一样。)这是用户A向用户B挑战的代码段。向用户B发送了消息,提醒他们挑战已发生。通过私人消息发布给他们。如果挑战被接受,我希望漫游器1)专门为用户A和用户B扮演一个名为“用户A与用户B”的角色2)接受用户A和用户B并将其都设置为该新角色,然后3)在漫游器所在的服务器内的特定类别内,创建一个名为“用户A与用户B”的战场。

我不确定问题是否出在机器人通过私人消息而不是在服务器上与用户对话时,机器人是如何尝试在服务器中扮演角色和渠道的。我以为将“ server”变量用作服务器ID会有所帮助,但在接受消息后似乎没有任何作用。

// 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 :(得分:0)

我认为问题在于您使用代码创建了一个rol和channel创建了一个名为createChannel的函数,但从未调用过该函数。

您可以在声明函数后调用它,或者(我认为更好)您可以删除以下行

function createChannel(message){

} // problems end here