Discord.js mod bot ban 命令无效
Discord.js mod bot ban command not working
我的 discord bot 的禁止命令不起作用,目前给我这个错误。我的角色 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)
}
}
您的命令几乎没有问题。
首先是如果提到用户,它不允许使用命令禁止用户,它只允许通过用户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?")
发送消息来进行一些调试
如果您使用的是 discord.js v12,您可以按照其他答案所说的去做,并通过提及 message.mentions.members.first()
吸引用户,但如果您使用的是 v13,那将不再有效
它给出该错误的原因是因为您需要单独通过用户 ID 获取用户,因此您可以这样做 client.users.fetch(args[0].replace('<@!', '').replace('>', ''))
以删除 <@!
和 >
(提及前缀)从它。
我的 discord bot 的禁止命令不起作用,目前给我这个错误。我的角色 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)
}
}
您的命令几乎没有问题。
首先是如果提到用户,它不允许使用命令禁止用户,它只允许通过用户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?")
如果您使用的是 discord.js v12,您可以按照其他答案所说的去做,并通过提及 message.mentions.members.first()
吸引用户,但如果您使用的是 v13,那将不再有效
它给出该错误的原因是因为您需要单独通过用户 ID 获取用户,因此您可以这样做 client.users.fetch(args[0].replace('<@!', '').replace('>', ''))
以删除 <@!
和 >
(提及前缀)从它。