Discord Bot JS - 如何将角色附加到特定的discord标签?

时间:2018-04-23 11:48:24

标签: javascript discord discord.js

我正在为我的不和谐编写一个机器人,我想要一个我的mod可以编写的命令,它将一个静音角色附加到一个特定的玩家。目前,他们直接使用discord标签键入/静音(例如/ muteDanyboy#8473),并且discord标签保存在名为commandsplit的变量中(如“Danyboy#8473”)。 如何定位该discord标记并将静音角色附加到该用户?

我使用discord.js编程。 第23行是我希望工作的部分,谢谢。

const Discord = require("discord.js");
const TOKEN = "MyToken"
const PREFIX = "/timeout24"
var bot = new Discord.Client();
const COMMAND = "/mute"

/*Confirms the bot is active */
bot.on("ready", function(){
    console.log("Bot Active");
});

/*Gives new members the "Member" role */
bot.on("guildMemberAdd", function(member) {
    member.addRole(member.guild.roles.find("name", "Member"))
});

/*The mute command */
bot.on("message", function(message) {
    if(message.author.equals(bot.user)) return;
    if(!message.content.startsWith(COMMAND)) return;
    var commandsplit = message.content.substring(COMMAND.length).split(" ");

    commandsplit.id.addRole(message.guild.roles.find("name", "Muted"))

})
bot.login(TOKEN);

1 个答案:

答案 0 :(得分:0)

仔细阅读discord.js documentation for guildMember以使用.addRole设置静音角色!

您的方法无法正常工作,因为您有一个用户名字符串,但 .addRole会为该成员使用Map(对象类型)。所以你需要存储成员是一个具有给定用户名的变量。虽然你也可以这样做,但是更好的方法是使用@take,它们只被解析为对象。

首先制作一个if语句并检查它是否是静音命令if(message.startsWith(${prefix}mute);(你需要从botconfig.json调用前缀或者先在邮件文件中定义它)然后在if语句使用以下代码。

let muteuser = message.mentions.members.first();
let muterole = message.guild.roles.find('name',"Muted");
muteuser.addRole(muterole);

请确保您理解代码,而不仅仅是复制代码。

如果您需要任何帮助,请告诉我