discord.js - 如何使用命令解禁用户?
问题描述
我正在尝试制定一个解除某人禁令的命令。
我试过了member.unban
,message.guild.unban
现在的,
message.guild.members.unban
。
我不太确定该怎么做。
这是我当前的代码:
const Discord = require('discord.js');
module.exports = {
name: "unban",
description: "unbans a member from the server",
async run (client, message, args) {
if(!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send('You can\'t use that!')
if(!message.guild.me.hasPermission("BAN_MEMBERS")) return message.channel.send('I don\'t have the permissions.')
const member = message.mentions.members.first();
if(!args[0]) return message.channel.send('Please specify a user');
let reason = args.slice(1).join(" ");
if(!reason) reason = 'Unspecified';
message.guild.members.unban(`${member}`, `${reason}`)
.catch(err => {
if(err) return message.channel.send('Something went wrong')
})
const banembed = new Discord.MessageEmbed()
.setTitle('Member Unbanned')
.addField('User Unbanned', member)
.addField('Unbanned by', message.author)
.addField('Reason', reason)
.setFooter('Time Unbanned', client.user.displayAvatarURL())
.setTimestamp()
message.channel.send(banembed);
}
}
我的命令提示符没有任何错误,但这就是不和谐中显示的内容:图像和用户仍然未被禁止。
解决方案
您必须将UserResolvable传递给该.unban()
方法。将member
对象放在模板字符串( ${member}
) 中会将其转换为提及用户的字符串,并且不起作用。
你这样做的方式也可能无法正常工作,因为用户GuildMember
在被服务器禁止时不会被提及。
要解决这个问题,您可以更改您的命令,以便通过他们的 ID 来取消禁止用户 ( !unban 873478935468795467
)。代码将如下所示:
message.guild.members.unban(id)
(id
是一个包含 id 的字符串)
我强烈建议您查看文档。他们为这些情况提供了很好的例子。
推荐阅读
- powershell - powershell 字符串替换内联或新循环
- c - 如何OpenMP并行嵌套for循环不能折叠
- swift - 无法显示来自 Firestore 的数据,但添加工作正常
- python - 如何以原生 Pytorch 格式定义模型并导入 LightningModule,无需复制和粘贴?
- python - Pandas - 以特定子字符串结尾的字符串向下传播,直到列出新的字符串
- php - 为什么我在渲染新页面时无法访问 php 变量
- javascript - Three.js 对象无法呈现 - 无法在“WebGL2RenderingContext”上执行“uniform3fv”:重载解析失败
- azure-active-directory - 使用 graph.microsoft.com 时找不到类型 Microsoft.Open.AzureAD.Model.ResourceAccess
- jquery - jQuery函数在滚动时多次触发
- c - pthread_create() 之后线程的好处是什么?