【发布时间】:2020-12-26 06:57:17
【问题描述】:
我目前正在通过 Discord.js 创建一个机器人,我希望有人能够发出命令以获得角色。但是,我一生都无法弄清楚这一点。 在我的 bot 文件夹中,我使用以下代码块创建了一个 addrole.js 文件:
const Discord = require("discord.js");
const roles = message.guild.roles.cache.map((role) => role);
const member = message.mentions.members.first();
const role = message.mentions.roles.first();
const colours = require("../colours.json");
module.exports.run = async (bot, message, args) => {
if (!message.member.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"]))
return message.channel.send(
"Sorry, frog lover! :disappointed: :broken_heart: You don't have permission to perform this command!"
);
let rMember =
message.mentions.members.first ||
message.guild.members.cache.find((m) => m.user.tag === args[0]) ||
message.guild.members;
let role =
message.guild.roles.cache.find((r) => r.name == args[1]) ||
message.guild.roles.cache.find((r) => r.id == args[1]) ||
message.mentions.roles.first();
if (!role)
return message.channel.send(
"Which role do I give to this user, frog lover? :point_right: :point_left:"
);
if (!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"]))
return message.channel.send(
"Sorry, friend :broken_heart: :shrug: I don't have permission to perform this command!"
);
if (rMember.roles.has(role.id)) {
return message.channel.send(
`$rMember.displayName), already has this role!`
);
} else {
await rMember.roles.add(role.id).catch((e) => console.log(e.message));
message.channel.send(
`The role ${role.name} has been added to ${rMember.displayName}.`
);
}
let embed = new Discord.RichEmbed()
.setColor(colours.redlight)
.setAuthor(`${message.guild.name} Modlogs`, message.guild.iconURL)
.addField("Moderation:", "Addrole")
.addField("Mutee:", rMember.user.username)
.addField("Reason:", reason)
.addField("Date:", message.createdAt.toLocaleString());
letsChannel = message.guild.channels.cache.find(
(c) => c.name === "beans-the-frog"
);
sChannel.send(embedVariable);
};
module.exports.config = {
name: "addrole",
description: "Adds a role to a member of the guild!",
usage: "beans addrole",
accessableby: "Moderators",
aliases: ["ar", "roleadd"],
};
我按照这个教程到达这里:https://www.youtube.com/watch?v=GCSbZ2UbriU
我已授予我的机器人 Manage_Roles 权限,并尝试同时声明“beans addrole (role) (user)”和“beans addrole (user) (role)”。我希望他甚至指定错误消息,或者更好的是,添加角色。但是,他甚至没有吐出错误消息,我的控制台也没有。其他一切正常,只是这个特定功能不起作用。任何输入/反馈都会有很大帮助。
【问题讨论】:
-
也许this可以帮助你。
-
这能回答你的问题吗? Error when iterating through a member's roles in discord.js 它包含有关如何使用
RoleManager(message.member.roles) 添加角色的信息。 -
您似乎也在使用 v11 代码。如果您使用的是 discord.js v12(最新版本),您的代码将无法运行。有关重大更改的信息,请参阅 this。
标签: javascript node.js discord discord.js