【问题标题】:Channel.updateOverwrite not a functionChannel.updateOverwrite 不是函数
【发布时间】:2021-10-01 09:26:21
【问题描述】:

这会按照我的意愿创建频道,但不会在新频道中发布“感谢您联系支持”的消息。

message.channel.send 将其发送到放置 !ticket 的频道(不是我不想要的新频道) channel.send 和 channel.updateOverwrite 作为函数返回。我似乎找不到错误!

这是一个基本的票务机器人。

module.exports.run = async (client, message, args) => {
 let channel = message.guild.channels.create(`ticket: ${message.author.tag}`,{type: 'text'}).then(channel =>{
 channel.setParent('868513748711800853')
 });
   

  channel.updateOverwrite(message.guild.id, {
    SEND_MESSAGE: false,
    VIEW_CHANNEL: false,
  }); 
  channel.updateOverwrite(message.author, {
    SEND_MESSAGE: true,
    VIEW_CHANNEL: true,
  });
  const reactionMessage = channel.send("Thank you for contacting support!");

  try {
    reactionMessage.react("????");
    reactionMessage.react("⛔");
  } catch (err) {
    channel.reply("Error sending emojis!");
    throw err;
  }

  const collector = reactionMessage.createReactionCollector(
    (reaction, user) => message.guild.members.cache.find((member) => member.id === user.id).hasPermission("ADMINISTRATOR"),
    { dispose: true }
  );

  collector.on("collect", (reaction, user) => {
    switch (reaction.emoji.name) {
      case "????":
        channel.updateOverwrite(message.author, { SEND_MESSAGES: false });
        break;
      case "⛔":
        channel.send("Deleting this channel in 5 seconds!");
        setTimeout(() => message.channel.delete(), 5000);
        break;
    }
  });

  message.channel
    .send(`We will be right with you! ${channel}`)
    .then((msg) => {
      setTimeout(() => msg.delete(), 7000);
      setTimeout(() => message.delete(), 3000);
    }).catch((err) => {
      throw err;
   });
  
};

module.exports.help = {
   name: "ticket",
   aliases: [""] 
}

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    channels.create() 返回一个待处理的承诺,因此您需要解决它。由于channel是一个promise,当你调用channel.updateOverwrite()channel.send()时,它没有这些方法,它们是未定义的,所以会抛出错误。

    let channel = await message.guild.channels.create(
      `ticket: ${message.author.tag}`,
      { type: 'text' },
    );
    
    await channel.setParent('868513748711800853');
    
    channel.updateOverwrite(message.guild.id, {
      SEND_MESSAGE: false,
      VIEW_CHANNEL: false,
    });
    channel.updateOverwrite(message.author, {
      SEND_MESSAGE: true,
      VIEW_CHANNEL: true,
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 2019-12-20
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多