#discord.js #referenceerror #commando
Вопрос:
Используя код команды WOK Thanks, который я клонировал из репозитория и немного отредактировал, но я получаю команду ReferenceError: Invalid left-hand side in assignment
from commando в самом диссонансе, когда набираю команду.
Код:
const Commando = require('discord.js-commando')
const Discord = require('discord.js')
const thanksSchema = require('@schemas/thanks-schema')
module.exports = class ThanksCommand extends Commando.Command {
constructor(client) {
super(client, {
name: 'thanks',
group: 'thanks',
memberName: 'thanks',
description: 'Thanks a staff member for their help',
})
}
async run(message) {
const target = message.mentions.users.first()
if (!target) {
const noPingThanksEmbed = new Discord.MessageEmbed()
.setTitle('ERROR: Invalid user provided')
.setDescription('Please tag a valid user')
.setColor('#ff0000')
message.channel.send(noPingThanksEmbed)
return
}
const { guild } = message
const guildId = guild.id
const targetId = target.id
const authorId = message.author.id
const now = new Date()
if (targetId === authorId) {
const thankSelfEmbed = new Discord.MessageEmbed()
.setTitle('ERROR: Invalid user provided')
.setDescription('You cannot thank yourself')
.setFooter('LOL YOU THOUGHT')
.setColor('#ff0000')
message.channel.send(thankSelfEmbed)
return
}
const authorData = await thanksSchema.findOne({
userId: authorId,
guildId,
})
if (authorData amp;amp; authorData.lastGave) {
const then = new Date(authorData.lastGave)
const diff = now.getTime() = then.getTime()
const diffHours = Math.round(diff / (1000 * 60 * 60))
const hours = 24
if (diffHours <= hours) {
const cooldownThankEmbed = new Discord.MessageEmbed()
.setTitle('ERROR: User on cooldown')
.setDescription(`You have already thanked someone within the last ${hours} hours`)
.setColor('#ff0000')
message.channel.send(cooldownThankEmbed)
return
}
}
await thanksSchema.findOneAndUpdate({
userId: authorId,
guildId,
}, {
userId: authorId,
guildId,
lastGave: now,
}, {
upsert: true,
})
const result = await thanksSchema.findOneAndUpdate({
userId: targetId,
guildId,
}, {
userId: targetId,
guildId,
$inc: {
received: 1,
}
}, {
upsert: true,
new: true,
})
const amount = result.received
const thanksEmbed = new Discord.MessageEmbed()
.setTitle('SUCCESS')
.setDescription(`<@${authorId}> has thanked <@${targetId}!nnThey now have ${amount} thanks`)
.setColor('#1be730')
message.channel.send(thanksEmbed)
}
}
Вот схема:
const mongoose = require('mongoose')
const reqString = {
type: String,
required: true,
}
const thanksSchema = mongoose.Schema({
userId: reqString,
guildId: reqString,
received: {
type: Number,
default: 0
},
lastGave: Date
})
module.exports = mongoose.model('thanks', thanksSchema)
Код не возвращает никаких ошибок в самой консоли, просто разлад, и бот продолжает работать как ни в чем не бывало, но команда не работает, потому что процесс остановлен. Я не смог найти никаких явных проблем с операторами, чего я и ожидал от этой ошибки…
Ответ №1:
Ошибка не в Разногласиях.JS или коммандос, это из этой строки в вашей run()
функции
const diff = now.getTime() = then.getTime()
Ты это имел в виду?
const diff = now.getTime() - then.getTime()
При возникновении ошибки найдите путь к файлу и строку, в которой возникает ошибка
Комментарии:
1. Под Commando я подразумевал, что ошибка была отправлена в саму Discord, поэтому она не указывала путь к файлу и строку. Я думаю, что я опечатал эту строку, так что спасибо за это, это действительно была ошибка.