使用 bot 从私人消息自动创建角色和频道的问题

issue with creating role and channel automatically from private message with bot

不确定创建通道和创建角色如何在下面的代码中不起作用,接近底部。 (编辑:没有任何内容发送到控制台,代码也没有任何反应。就像它被完全忽略了一样。)这是用户 A 挑战用户 B 的代码片段。用户 B 收到消息,提醒他们挑战已经完成通过私信发给他们。如果挑战被接受,我希望机器人 1) 专门为用户 A 和用户 B 创建一个名为 "User A vs User B" 的角色 2) 接受用户 A 和用户 B 并将他们都放入该新角色中 3) 创建一个名为 "User A vs User 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.");
        }
      })
   })
}

我一直在想我是否需要以不同的方式制作频道和角色,因为它试图从私人消息而不是在服务器内部制作..

感谢您的帮助!如果我在这样的问题上过多地使用堆栈溢出,我也很抱歉......你们很擅长帮助我看到不同的做事方式以及我做错了什么,所以我正在学习,但我没有想感觉自己滥用太多了。

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

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

function createChannel(message){

} // problems end here