#javascript #node.js #discord.js
Вопрос:
Я создаю команду распаковки, все шло хорошо, пока я не попытался выполнить команду распаковки, я не могу использовать .catch, чтобы проверить, забанен пользователь или нет, так есть ли лучший способ или исправление?
Я планирую изменить его на встраиваемые, чтобы добавить ему больше стиля, если это может вам как-то помочь 😀
Вот команда ban / unban:
const { MessageEmbed } = require('discord.js'); //ban module.exports = { name: 'ban', category: 'Owner', description: 'Bans a member.', aliases: [], usage: 'ban lt;usergt;', userperms: [], botperms: [], run: async (client, message, args) =gt; { if (!message.guild.member(message.author).hasPermission("BAN_MEMBERS")) { return message.channel.send('You do not have the permission to ban users!'); } if (!message.guild.member(client.user).hasPermission("BAN_MEMBERS")) { return message.channel.send("I don't have the permission to ban users!"); } if (message.mentions.users.size === 0) { return message.channel.send("Can't find this member."); } if (message.mentions.members.first().id == message.author.id) { return message.channel.send("Silly you, why are you trying to ban yourself?") } var member = message.mention.members.first(); member .ban() .then(member =gt; { guild.members.ban(id); message.channel.send("*it's not a bird,*, *it's just* **" member.displayName "** *getting banned! :hammer:*"); }) .catch(() =gt; { message.channel.send("You can't ban this member"); }); }, }; //unban module.exports = { name: 'unban', category: 'Owner', description: 'Unbans a banned member.', aliases: [], usage: 'unban lt;usergt;', userperms: [], botperms: [], run: async (client, message, args) =gt; { if (!message.guild.member(message.author).hasPermission("BAN_MEMBERS")) { return message.channel.send('You do not have the permission to unban users!'); } if (!message.guild.member(client.user).hasPermission("BAN_MEMBERS")) { return message.channel.send("I don't have the permission to unban users!"); } if (message.mentions.users.size === 0) { return message.channel.send("Can't find this member."); } if (message.mentions.members.first().id == message.author.id) { return message.channel.send("Lol, your not banned....") } var member = message.mentions.members.first(); (member =gt; { message.guild.members.unban(id) message.channel.send("**" member.displayName "** **unbanned! :hammer:**"); }) .catch(() =gt; { message.channel.send("User not banned."); }); }, };
Ошибка:
(node:1551) UnhandledPromiseRejectionWarning: TypeError: message.mentions.members.first.catch is not a function at Object.run (/home/runner/DwaCraft-Ticket-bot/commands/owner/ban-unban.js:65:45) at module.exports (/home/runner/DwaCraft-Ticket-bot/events/guild/message.js:55:11) at Client.emit (events.js:314:20) at MessageCreateAction.handle (/home/runner/DwaCraft-Ticket-bot/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (/home/runner/DwaCraft-Ticket-bot/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (/home/runner/DwaCraft-Ticket-bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31) at WebSocketShard.onPacket (/home/runner/DwaCraft-Ticket-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22) at WebSocketShard.onMessage (/home/runner/DwaCraft-Ticket-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10) at WebSocket.onMessage (/home/runner/DwaCraft-Ticket-bot/node_modules/ws/lib/event-target.js:132:16) at WebSocket.emit (events.js:314:20) (node:1551) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:1551) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Ответ №1:
Возможно, вам потребуется связать блок catch с функцией unban.
message.guild.members.unban(id) .then(() =gt; { message.channel.send("**" member.displayName "** **unbanned! :hammer:**" ) }) .catch(() =gt; { message.channel.send("User not banned."); })
Вы можете получить идентификатор участника из переменной участника с помощью member.id
Комментарии:
1. Я получил это : (узел:1840) Необработанное предупреждение об ошибке: Ошибка ссылки: идентификатор не определен
2. Вы можете извлечь идентификатор из
member.id
3. О, работает, но у меня проблема с запретом, там написано, что вы не можете запретить этого пользователя, но все равно запрещаете пользователя…
4. Возможно, вам также придется передать
member.id
функцию запрета вместо простого идентификатора. Кроме того, попробуйте также зарегистрировать ошибки консоли в операторе catch.5. Если на текущий вопрос был дан ответ, отметьте этот ответ галочкой. Теперь у вас, похоже, появилась новая несвязанная ошибка, подумайте о создании нового поста.