首页 > 解决方案 > 仅在特定公会上设置自动角色

问题描述

我想在新用户加入服务器 X 时为他们自动设置角色,问题是这个机器人也在服务器 Y 上,而服务器 Y 没有这个角色。

client.on('guildMemberAdd', member => {
  console.log('User ' + member.user.tag + ' has joined Steampunk.');
  var role = member.guild.roles.find(x => x.name === "name");
  member.addRole('247442955651121154');
})

我希望在应用角色之前我可以做一个简单的检查,如果用户已经加入服务器 X,添加角色,否则,什么都不做。到目前为止,我的尝试都失败了。

任何输入将不胜感激!

标签: discord.js

解决方案


我最终按名称定义了有问题的公会,将其保存为常量,并检查了特定的公会。

如果您的机器人在多台服务器上,但您只希望在特定服务器上使用 greet/addRole,所有这些都集成到加入时显示的消息中;

//Welcome message and autorole for specific server and channel.
client.on('guildMemberAdd', member => {
    const = client.guilds.find(guild => guild.name === "Steampunk");
        if (!guild) return;
         const channel = member.guild.channels.find(ch => ch.name === "greetings");
            if (!channel) return;
  let botembed = new Discord.RichEmbed()
  .setColor("#ff9900")
  .setThumbnail(member.user.avatarURL)
  .setDescription(`${member} Welcome to the Ark Steampunk Sponsored Mod Discord!\nPlease report all <#244843742568120321> and if u need any help view or ask your question in <#334492216292540417>. Have any ideas we got a section for that too <#244843792132341761>. Enjoy!:stuck_out_tongue: Appreciate all the support! <http://paypal.me/ispezz>`)
  .setTimestamp()
  .setFooter("Steampunk Bot", client.user.avatarURL);
    channel.send(botembed);
      console.log('User ' + member.user.tag + ' has joined ' + member.guild.name + '.');
  var role = member.guild.roles.find(x => x.name === "name");
  member.addRole('247442955651121154');
  });

推荐阅读