#node.js #discord #discord.js
Вопрос:
У меня есть бот Discord, использующий команды слэша, и я выполняю команду запрета. Я использую Discord.UserManager.resolve()
для разрешения идентификатора пользователя Discord или члена гильдии для объекта пользователя. Однако, когда я пытаюсь использовать Discord.UserManager.resolve()
его, он возвращает ошибку TypeError: Discord.UserManager.resolve is not a function
.
Примечание: Бот использует командные файлы, хранящиеся в отдельной папке. Вот module.exports
:
const Discord = require('discord.js')
module.exports = {
name: 'ban',
description: 'Ban a person from the guild.',
options: [
{
name: 'byid',
description: 'Ban a member using their unique UserId, whether they are in the guild or not.',
type: 1,
options: [
{
name: 'id',
required: true,
description: 'The user's ID.',
type: 'STRING'
},
{
name: 'reason',
required: false,
description: 'The reason why you banned the user.',
type: 'STRING'
}
]
},
{
name: 'bymention',
description: 'Ban a user by @mentioning them.',
type: 1,
options: [
{
name: 'member',
required: true,
description: 'The member to ban.',
type: 'USER'
},
{
name: 'reason',
required: false,
description: 'The reason why you banned the user.',
type: 'STRING'
}
]
}
],
permissions: [
{
id: '784539540101660712',
type: 1,
permission: true,
}
],
defaultPermission: false,
async execute(interaction, bot) {
console.log(interaction.options)
let member = 0
try {
// member
member = interaction.options.get('member').member
} catch (error) {
// id
member = interaction.options.get('id').value
}
if (!bot.guilds.cache.get('784526382788771870').me.permissions.has(Discord.Permissions.FLAGS.BAN_MEMBERS, true)) {
interaction.reply('I don't have permission to ban members! Please contact an administrator or add the `BAN MEMBERS` permission on my role. ')
return
}
member = Discord.UserManager.resolve(member)
if (member.id === 856263292872163348) {
interaction.reply('You want to ban me after all my hard work? What a disgrace.')
return
}
if (member.bannable === true || interaction.guild.members.fetch(member)) {
interaction.guild.members.ban(member, { reason: reasonval })
interaction.reply(`Success! ${member.tag} was banned for ${reasonval}.`)
} else interaction.reply('I can't ban this user. Make sure I have the BAN MEMBERS or ADMINISTRATOR permission, and my highest role is higher than the user's highest role.')
}
Комментарии:
1. Воспользуйся
interaction.member
.2. Участник, которого забанили, вводится либо как член Гильдии (используя interaction.options.get («участник»). member), либо как идентификатор пользователя, который мне нужно в любом случае преобразовать в пользователя.
3. Быстрый совет:
if (member.id === 856263292872163348)
необходимо изменить! Идентификаторы участников являются строками, и число на самом деле не будет тем числом, которое вы там видите, из-за того, что JavaScript имеет максимальное безопасное число. Пожалуйста, сделайте это строкой
Ответ №1:
UserManager.resolve не является статической функцией (она не вызывается в самом классе). Вы, вероятно, хотели вызвать его на клиенте.пользователи вместо этого.
member = bot.users.resolve(member)
//I assume bot is your client