Discord.js mod bot ban 命令不起作用
Posted
技术标签:
【中文标题】Discord.js mod bot ban 命令不起作用【英文标题】:Discord.js mod bot ban command not working 【发布时间】:2021-11-19 01:24:31 【问题描述】:我的不和谐机器人的禁令命令不起作用,目前给我这个错误。我的角色 ID 是 853527575317708820
我不知道我做错了什么,所以请帮助我
命令如下:
Server is ready.
TigerShark Community#3557 Has logged in
(node:204) UnhandledPromiseRejectiontarning: DiscordAPTError: T
AEE RS
user_id: Value "<@!856413967595012127>" is not snowflake.
at RequestHandler.execute (/home/Tunner/TSC/node_modules/di
scoxd. js/src/rest/RequestHandler. js:154:13)
at processTicksAndRejections (internal/process/task
§5:97:5) :!
at async RequestHandler.push (/home/zunner/TSC/node
/discord. js/s1c/rest/RequestHandler. js:39:14)
这是我的代码:
module.exports =
name: 'ban',
description: "Used to ban members from a server",
async execute(client, message, args, Discord)
if (!(message.member.roles.cache.some(r => r.id === "853527575317708820"))) return
let reason;
const user = await client.users.fetch(args[0])
if (!args[1])
reason = "Not specified"
else
reason = args[1]
const embed = new Discord.MessageEmbed()
.setTitle(`$user.username was banned!`)
.setDescription(`$user.username was banned by $message.author.username for: $reason`)
.setColor("#f0db4f")
.setFooter("Ban Command")
.setTimestamp()
message.channel.send(embed)
message.guild.members.ban(user)
【问题讨论】:
【参考方案1】:您的命令几乎没有问题。
第一个是如果提到用户,它不允许使用命令禁止用户,它只允许通过用户 ID 禁止。要解决这个问题,只需:
const user = message.mentions.members.first() || await client.users.fetch(args[0])
您还应该添加检查是否找到用户,因此在您声明 user
的值之后
const user = message.mentions.members.first() || await client.users.fetch(args[0])
if(!user) return message.reply(`No user found`);
现在,如果您允许同时禁止提及和用户 ID,则可能会有不同的 user
值。因此,我建议您也将嵌入内容编辑为:
const embed = new Discord.MessageEmbed()
.setTitle(`$user.user.username was banned!`)
.setDescription(`$user.user.username was banned by $message.author.username for: $reason`)
.setColor("#f0db4f")
.setFooter("Ban Command")
.setTimestamp()
这应该可以解决您的大部分问题,我建议如果将来出现 undefined
或者您在代码中遇到任何错误。通过向控制台console.log(variable)
或console.log("This works?")
发送消息来进行一些调试
【讨论】:
谢谢,兄弟@NotTrixxie 但是id有问题,不能用用户id禁止它的作品只提到【参考方案2】:如果您使用的是 discord.js v12,您可以按照其他答案所说的去做,并通过提及 message.mentions.members.first()
来获取用户,但如果您使用的是 v13,那将不再有效
它给出该错误的原因是因为您需要仅通过他们的 id 获取用户,因此您可以执行此操作 client.users.fetch(args[0].replace('<@!', '').replace('>', ''))
以从中删除 <@!
和 >
(提及前缀)。
【讨论】:
您仍然可以在 v13 上使用message.mentions.members.first()
@NotTrixxie 啊,是的,你的权利还是从 args 获取 id 更好以上是关于Discord.js mod bot ban 命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Discord bot 更改前缀命令出错 (discord.js)
Discord.js Bot 赠品命令:.array() 不是函数