Случайная цитата, отправленная ботом - Неожиданный Идентификатор - PullRequest
0 голосов
/ 16 ноября 2018

Итак, я получаю странное сообщение об ошибке, которое выглядит примерно так:

SyntaxError: Unexpected identifier
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /home/remix867/bot_commando/node_modules/require-all/index.js:52:46

Так что раньше это работало, но у меня установлены все зависимости.Код Javascript выглядит следующим образом:

const { Command } = require('discord.js-commando');
const { oneLine } = require('common-tags');
const { RichEmbed } = require('discord.js');
const config = require('../../config.json');
var quotes = config.quotes;


module.exports = class EchoCommand extends Command {
    constructor(client) {
        super(client, {
            name: 'quote',
            group: 'quote',
            memberName: 'quote',
            description: 'Echoes a random Quote.',
            details: oneLine`,
            I'll say out a quote`,
            examples: ['quote']
        });
    }

    const avatarURL = message.author.avatar ? message.author.avatarURL: 'https://discordapp.com/assets/0e291f67c9274a1abdddeb3fd919cbaa.png';
    const embed = new Discord.RichEmbed()
      .setAuthor(`${message.author.tag}`, `${avatarURL}`);
      .setColor(0x0000FF);
      .setDescription(quotes[Math.floor(Math.random() * quotes.length)]);
      .setTimestamp();
    await message.channel.send({
      embed
    });
};

Config.json - это просто простой json, в котором хранятся все случайные цитаты.

Проблема должна быть в строке 20, где я определяюURL аватара, но если я удаляю эту строку, он говорит что-то еще в другой строке с точно такой же ошибкой.

Заранее спасибо:)

1 Ответ

0 голосов
/ 16 ноября 2018

Когда вы создаете команду с помощью Commando, вам нужно поместить код, который вы хотите выполнить, в метод .run класса.
В вашем случае код должен выглядеть так:

module.exports = class EchoCommand extends Command {
  constructor(client) {
    super(client, {
      name: 'quote',
      group: 'quote',
      memberName: 'quote',
      description: 'Echoes a random Quote.',
      details: oneLine `,
            I'll say out a quote`,
      examples: ['quote']
    });
  }

  async run(message) {
    const avatarURL = message.author.avatar ? message.author.avatarURL : 'https://discordapp.com/assets/0e291f67c9274a1abdddeb3fd919cbaa.png';
    const embed = new Discord.RichEmbed()
      .setAuthor(`${message.author.tag}`, `${avatarURL}`);
    .setColor(0x0000FF);
    .setDescription(quotes[Math.floor(Math.random() * quotes.length)]);
    .setTimestamp();
    await message.channel.send({
      embed
    });
  }
};

Если бы вы добавили аргументы в свою команду, она выглядела бы так:

aysnc run(message, {arg1, arg2, arg3, ...args}) {...}
...