Не работает команда discord bot ban/kick

я сделал команду бана и кика, но когда я использую, мой бот вылетает с ошибкой [ message.guild.member is not a function ]

это мой код для команды запрета

  if (message.content.startsWith(prefix + 'ban')) {
    const user = message.mentions.users.first();
    if (user) {
      if (message.member.hasPermission('BAN_MEMBERS')) {
        message.guild.member(user).ban('Vous avez été ban par un admin').then(() => {
          message.channel.send(`${user.username} a été ban !`);
        }
        ).catch(err => {
          console.log(err);
        }
        );
      } else {
        message.channel.send('Vous n\'avez pas la permission de ban !');
      }
    } else {
      message.channel.send('Vous devez mentionner un utilisateur !');
    }
  }
});

это мой код для команды удара

client.on('message', message => {
  if (message.content.startsWith(prefix + 'kick')) {
    const user = message.mentions.users.first();
    if (user) {
      const member = message.guild.member(user);
      if (member) {
        if (message.member.hasPermission('KICK_MEMBERS')) {
          member.kick('Vous avez été kick par un admin').then(() => {
            message.reply(`${user.tag} a été kick !`);
          }).catch(err => {
            message.reply('Je ne peux pas kick cet utilisateur !');
            console.log(err);
          });
        } else {
          message.reply('Vous n\'avez pas la permission de kick !');
        }
      } else {
        message.reply('Cet utilisateur n\'est pas dans le serveur !');
      }
    } else {
      message.reply('Vous devez mentionner un utilisateur !');
    }
  }
});
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сделай это так:

message.guild.members.cache.get(user).ban()
message.guild.members.cache.get(user).kick()

нет не работал извините

nemson 16.05.2022 20:45

измените строку разрешения на это...

message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)

изменить строку бана на эту...

user.ban({ reason:'Vous avez été ban par un admin' })
.then(() => {
    message.channel.send(`${user.username} a été ban !`);
}

лк если помогло ;)

нет не работал извините

nemson 16.05.2022 20:45

@nemson какую версию discord.js ты используешь?

gavin 16.05.2022 21:18

я использую v 13.6.0

nemson 16.05.2022 21:24

и обновление по-прежнему такое же сообщение об ошибке.member.hasPermission не является функцией

nemson 16.05.2022 21:26

обновлено снова, кстати, вы сказали, что ошибка была message.guild.member не функцией разрешения.

gavin 16.05.2022 21:34

я уже использую message.member.permissions.has('BAN_MEMBERS') и это то же самое сообщение об ошибке.member.hasPermission и извините за последний комментарий, я немного устал

nemson 16.05.2022 21:38

снова изменил его на Discord.Permissions.FLAG.BAN_MEMBERS

gavin 16.05.2022 21:39

теперь его Дискорд не определяется

nemson 16.05.2022 21:41

как выглядит ваш discord.js или импорт?

gavin 16.05.2022 21:43

поэтому я использовал const Discord = require('discord.js'); для определения разногласий, и теперь у меня ошибка Невозможно прочитать свойства неопределенного (чтение «BAN_MEMBERS»)

nemson 16.05.2022 21:44

и вот как выглядит мой discord.js require/import const {Client, Intents, MessageEmbed, Presence, Collection, Interaction}= require ('discord.js')

nemson 16.05.2022 21:46

@nemson добавил Permissions к этому, и я просто удалил Discord из начала в своем ответе, так что теперь это выглядит как Permissions.FLAGS.BAN_MEMBERS...

gavin 16.05.2022 21:49

поэтому мне пришлось определить разрешение с помощью const { Permissions } = require('discord.js');, и теперь у меня есть этот пользователь.бан не является функцией

nemson 16.05.2022 21:53

обновленный ответ, если это не сработает, попробуйте ваш исходный код, иначе lmk, и я посмотрю на него подробнее

gavin 16.05.2022 21:57

теперь у меня есть это message.guild.members.fetch(...).ban не является функцией, и я пытаюсь использовать свой исходный код, и я получаю сообщение об ошибке, что сообщение не является событием определения, хотя я использую const { Message } = require('discord.js'); для его определения

nemson 16.05.2022 22:03

Сообщение от discord.js не определяет это. Определение происходит от client.on("messageCreate", await message => {})

gavin 16.05.2022 22:05

ошибка Сэма с client.on("messageCreate", await

nemson 16.05.2022 22:10

какие намерения настроены для вашего бота?

gavin 16.05.2022 22:12

для моих целей у меня есть это const client = new Client({intents:[Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]})

nemson 16.05.2022 22:13

добавьте Intents.FLAGS.GUILD_BANS и Intents.FLAGS.GUILD_MESSAGES

gavin 16.05.2022 22:18

одно и то же сообщение не определено

nemson 16.05.2022 22:20

я просто отредактировал комментарий и добавил намерение GUILD_MESSAGES

gavin 16.05.2022 22:21

нет все та же ошибка

nemson 16.05.2022 22:23

есть ли способ поделиться со мной дополнительным кодом?

gavin 16.05.2022 22:33

Давайте продолжить обсуждение в чате.

nemson 17.05.2022 08:40
Ответ принят как подходящий
client.on('messageCreate', async (message) => { //since you're using v13, *message* is deprecated. So you need to change it to *messageCreate*
   if(message.content.startsWith(prefix + "kick")) { //You can do ${prefix}kick too.
      if(!message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) return message.reply("You can't use this command") //This line code is for when the member using this command. It will return when permissions isn't detected.
      if(!message.guild.me.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) return message.reply("I can't use this command.") //This is for when the bot missing its permissions.
      const member = message.mentions.members.first(); //users is not going to work.
      if(!member) return message.reply("Who are you going to kick?") //This line code is for when the member didn't find or pinged.
      if(!member.bannable) return message.reply("I can't ban this person") // This is for the person that is not bannable.
      await member.ban({ reason: 'Your reply'}) //You need to await, so it can fetch the member.
   }
})

Вы также можете использовать их ID для запрета использования

const member = message.mentions.members.first() || message.guild.members.fetch(args[0]) || message.guild.members.cache.get(args[0])

Вы также можете добавить причину для собственного использования

const reason = args.slice(1).join(" ")
member.ban({
   reason: reason
})

И с помощью вставки

const reason = args.slice(1).join(" ")
member.ban({
   reason: reason
})

const embed = new MessageEmbed()
.setDescription(`${reason}`)
.setColor('RANDOM')

message.channel.send({embeds: [embed]})

В дополнение к строкам кода, чтобы предотвратить любые ошибки, вы можете использовать ||. Например:

const reason = args.slice(1).join(" ") || "No Reason" //This is to prevent any errors for your embed

И да, вы также можете использовать === для предотвращения ошибки, когда вы случайно пропинговали себя.

if(!member.id === message.author.id) return message.reply("your_message");

Вам нужно добавить эту строку кода перед строкой args

 const args = message.content.trim().split(/ +/g);

Так должно быть так

 const args = message.content.trim().split(/ +/g);
 const reason = args.slice(1).join(" ") || "No Reason"

я попробовал и получил ошибку message is not defined

nemson 17.05.2022 08:51

нет, извините, все заработало, моя команда блокировки блокировала запуск бота, спасибо за вашу помощь

nemson 17.05.2022 08:59

но за бан по ID у меня такая ошибка args is not defined

nemson 17.05.2022 09:02

все работает, но мой бот не может забанить по ID

nemson 17.05.2022 09:10

и я попытался использовать вставку, но это не сработало, это ошибка, которую я получил DiscordAPIError DiscordAPIError: Invalid Form Body embeds[0].description: This field is required

nemson 17.05.2022 09:21

чтобы вставка работала, пришлось изменить ее на эту message.channel.send({ embeds: [embed]});, но причина не работает, я просто получаю пустую вставку

nemson 17.05.2022 09:24

я добавил это, чтобы смола работала const reason = args.slice(1).join(" ") if(!reason) return message.reply("You must provide a reason for the ban.")await member.ban({reason: reason}) но бот не собирает причину

nemson 17.05.2022 09:30

и я добавил это тоже, чтобы идентификатор работал if(member.id === message.author.id) return message.reply("You can't ban yourself.") if(member.id === message.guild.owner.id) return message.reply("You can't ban the server owner.") if(member.id === message.guild.me.id) return message.reply("I can't ban myself.")

nemson 17.05.2022 09:31

Ах, извините, я не обновил свой ответ, я на работе в банкомате.

新Acesyyy 17.05.2022 10:45

хорошо, не беспокойтесь, я не тороплюсь, я могу подождать

nemson 17.05.2022 10:47

Если этот ответ даст вам представление, можете оставить чек как правильный ответ!

新Acesyyy 17.05.2022 10:59

поэтому я удалил if(!member) return message.reply("Who are you going to kick?") if(!member.bannable) return message.reply("I can't ban this person"), но теперь это просто набор причин, по которым не работает

nemson 17.05.2022 11:03

обновление, у меня работает коллекция резонов, я должен был добавить это const args = message.content.split(' ').slice(1); теперь у меня проблема только с IDban

nemson 17.05.2022 14:02

для команды ID ban/kick я получаю эту ошибку Cannot access 'args' before initialization

nemson 17.05.2022 14:07

Ах, вам нужно добавить еще одну строку кода. я отредактирую свой ответ

新Acesyyy 18.05.2022 02:17

Другие вопросы по теме