Как мне изменить группу аргументов, разделенных пробелом, чтобы они стали одним аргументом в Discord. js? - PullRequest
1 голос
/ 28 мая 2020

Итак, я пытаюсь создать бота с командой, которая предупреждает кого-то в DM. Что у меня есть, так это то, что первый аргумент будет /ticket, а второй аргумент будет упоминанием, затем третий аргумент будет первым словом причины, а четвертый будет вторым словом причины и так далее. . У меня проблемы с изменением 3-го аргумента до конца причины, равной 1 аргументу. Итак, вот мой код:

const Discord = require('discord.js')
const bot = new Discord.Client()
const token = 'token here';
const PREFIX = '/';
const embed = new Discord.MessageEmbed()
const ping = require('minecraft-server-util')
bot.on('ready', async () => {
  console.log('This bot is online! Created by @littleBitsman.');

bot.on('message', message => {
  let args = message.content.substring(PREFIX.length).split(' ')
  if(message.content.startsWith(PREFIX))
  switch (args[0]) {
    case 'ticket':
      if (message.member.roles.highest == '701895573737046066') {
        mention = message.mentions.users.first()
        var thing = args.shift()
        thing = args.shift()
        var reason 
        reason = args.shift()
        mentionID = mention.id
        if(mention = null) {return}
        var messagetosend = new Discord.MessageEmbed()
          .setTitle('Ticket')
          .setDescription('Hey ' + thing + '! You recieved this because of: ' + reason + '.')
        message.client.users.fetch(`${mentionID}`).then(user => user.send(messagetosend))
      }
      }
  })
bot.login(token);

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

Я бы изменил подход, если я правильно понимаю, команда такая: / ticket @person bad behavior

И сообщение должно быть: Привет, человек! Вы получили это из-за: плохого поведения

Итак, я бы сделал это так:

mention = message.mentions.users.first()
if(mention = null) {return}
args.splice(0,2) //removes prefix and mention 
reason = args.join(" ")
var messagetosend = new Discord.MessageEmbed()
          .setTitle('Ticket')
          .setDescription('Hey ' + mention + '! You recieved this because of: ' + reason + '.')
        message.client.users.fetch(`${mentionID}`).then(user => user.send(messagetosend))

Измените его, как вам нравится

2 голосов
/ 28 мая 2020

Похоже, что args состоит только из массива слов, все из которых составляют причину.

Так почему бы не сделать это:

// sample args
let args = ["you", "forgot", "to", "turn", "it", "on"];

let reason = args.join(' ');

console.log('reason:' + reason);
// reason: you forgot to turn it on
...