You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Discord.js 消息反应取用户功能更新:战斗频道创建优化

战斗频道机器人更新完成

嘿,各位!我已经完成了战斗频道机器人的代码更新,现在可以正常运行啦🥳。这次更新的核心特性包括:

  • 频道创建前会先检查是否已存在,避免重复创建
  • 同一用户仅能创建一个战斗频道,无法同时创建T5和T4频道

祝大家圣诞快乐!🎄

更新后的Discord.js代码

Client.on("message", async (message) => { 
  if (message.author.Client || message.channel.type === "dm") return; 
  let messageArray = message.content.split(" "); 
  let cmd = messageArray[0]; 
  let args = message.content.substring(message.content.indexOf(" ") + 1); 
  if (cmd === `${prefix}battle`) { 
    let embed = new Discord.MessageEmbed() 
      .setTitle("⚔️ 1657 Battles! ⚔️") 
      .setDescription("React to this message to join the battle.") 
      .addFields( 
        { name: "磊", value: "T5" }, 
        { name: "賂", value: "T4" }, 
        { name: "雷", value: "T3" }, 
        { name: "", value: "T2" }, 
        { name: "", value: "T1" } 
      ) 
      .setColor("#0099ff") 
      .setTimestamp() 
      .setFooter("Please pick the troop type you want to battle with!"); 
    let msgEmbed = await message.channel.send(embed); 
    msgEmbed.react("磊"); // T5 
    msgEmbed.react("賂"); // T4 
    msgEmbed.react("雷"); // T3 
    msgEmbed.react(""); // T2 
    msgEmbed.react(""); // T1 
  } 
}); 

Client.on("messageReactionAdd", async (reaction, user, message) => { 
  // 添加事件监听器 
  if (reaction.message.partial) await reaction.message.fetch(); 
  if (user.id === Client.user.id) return; // 若为机器人自身反应则返回 
  if (!reaction.message.guild) return; // 若反应不在服务器内则返回 
  const guild = Client.guilds.cache.get("644295524404428832"); 
  
  if (guild.channels.cache.find((channel) => channel.name === "t5-battle-channel")) return; 
  if (reaction.emoji.name === "磊") { 
    let guild = reaction.message.guild; 
    guild.channels.create("T5 Battle Channel", { // 创建频道 
      type: "text", // 确保频道类型为文本频道 
      permissionOverwrites: [ // 设置权限覆盖 
        { id: guild.id, deny: "VIEW_CHANNEL" }, 
        { id: "788400016736780338", allow: ["VIEW_CHANNEL"] }, 
      ], 
    }); 
  } 
  
  if (guild.channels.cache.find((channel) => channel.name === "t4-battle-channel")) return; 
  if (reaction.emoji.name === "賂") { 
    let guild = reaction.message.guild; 
    guild.channels.create("T4 Battle Channel", { // 创建频道 
      type: "text", // 确保频道类型为文本频道 
      permissionOverwrites: [ // 设置权限覆盖 
        { id: guild.id, deny: "VIEW_CHANNEL" }, 
        { id: "788400619114463275", allow: ["VIEW_CHANNEL"] }, 
      ], 
    }); 
  } 
  
  if (guild.channels.cache.find((channel) => channel.name === "t3-battle-channel")) return; 
  if (reaction.emoji.name === "雷") { 
    let guild = reaction.message.guild; 
    guild.channels.create("T3 Battle Channel", { // 创建频道 
      type: "text", // 确保频道类型为文本频道 
      permissionOverwrites: [ // 设置权限覆盖 
        { id: guild.id, deny: "VIEW_CHANNEL" }, 
        { id: "788400701130670110", allow: ["VIEW_CHANNEL"] }, 
      ], 
    }); 
  } 
  
  if (guild.channels.cache.find((channel) => channel.name === "t2-battle-channel")) return; 
  if (reaction.emoji.name === "") { 
    let guild = reaction.message.guild; 
    guild.channels.create("T2 Battle Channel", { // 创建频道 
      type: "text", // 确保频道类型为文本频道 
      permissionOverwrites: [ // 设置权限覆盖 
        { id: guild.id, deny: "VIEW_CHANNEL" }, 
        { id: "788400738727624704", allow: ["VIEW_CHANNEL"] }, 
      ], 
    }); 
  } 
  
  if (guild.channels.cache.find((channel) => channel.name === "t1-battle-channel")) return; 
  if (reaction.emoji.name === "") { 
    let guild = reaction.message.guild; 
    guild.channels.create("T1 Battle Channel", { // 创建频道 
      type: "text", // 确保频道类型为文本频道 
      permissionOverwrites: [ // 设置权限覆盖 
        { id: guild.id, deny: "VIEW_CHANNEL" }, 
        { id: "788400784420372490", allow: ["VIEW_CHANNEL"] }, 
      ], 
    }); 
  } 
});

代码功能说明

  • 指令触发:用户发送带有指定前缀的battle指令后,机器人会发送一个包含不同等级战斗选项的嵌入消息,并添加对应表情反应
  • 频道创建:用户点击对应等级的表情后,机器人会自动创建该等级的专属文本战斗频道
  • 权限控制:每个战斗频道都会设置权限,仅指定角色可以查看和访问,其他成员无法看到频道
  • 防重复机制:创建频道前会检查服务器内是否已存在同类型频道,同时限制同一用户仅能创建一个战斗频道,避免频道泛滥

内容的提问来源于stack exchange,提问作者UKzs

火山引擎 最新活动