#discord.js
Вопрос:
Я хочу сделать так, чтобы при использовании !pm (пользователь) (какое-либо сообщение) мой бот отправлял личное сообщение пользователю, хотя я понятия не имею, как выбрать все после (пользователя) и назначить его переменной, чтобы отправить его пользователю. Мой текущий код выглядит так:
module.exports = {
name: 'pm',
description: 'Sends a personal message!',
execute(message, args, client) {
const pmMessage = args[1];
client.users.cache.get('464839066781745167').send(pmMessage);
}
}
Ответ №1:
Поскольку вы знаете индекс массива pmMessage
, с помощью этого индекса вы можете использовать метод среза, который возвращает массив из указанного состояния в конечный индекс. Например:
let pmMessage = args.slice(2); //returns array.
Примечание: Если конечный индекс не указан, то он учитывается до последнего индекса массива.
Теперь, используя метод join, вы можете объединить все индексы с любым указанным символом. Напр.:
let MessageContent = pmMessage.join(' '); //joined by space.
let args = ["UserID","This","represents","the","message","content","to","be","sent"];
console.log(args.slice(1));
console.log(args.slice(1).join(' '));
Ответ №2:
Попробуйте это, я думаю, это должно сработать:
let pm_args = args.slice(1).join(' ')
if(args[0]){
let user = getUserFromMention(args[0])
if(!user){
return message.reply('please mention a user.');
}
return client.users.cache.get(user.id).send(pm_args);
}
return message.reply('please mention a user.');
(Это то, что я использовал для упоминания о штуковине:)
function getUserFromMention(mention){
if(!mention) return;
if(mention.startsWith('<@') amp;amp; mention.endsWith('>')){
mention = mention.slice(2, -1);
if(mention.startsWith('!')){
mention = mention.slice(1);
}
return bot.users.cache.get(mention);
}
};
client.on("message", message => {
if(!message.content.startsWith(config.prefix)) return;
const withoutPrefix = message.content.slice(config.prefix.length);
const split = withoutPrefix.split(/ /);
const command = split[0];
const args = split.slice(1);
// Code...
});