#javascript #node.js #discord.js
#javascript #node.js #discord.js
Вопрос:
Я совершенно новичок в javascript и не изучил никаких основ. Тем не менее, я научился выполнять некоторые коды.
Я создал бота для повышения уровня, который будет отправлять пользователям очки опыта за их сообщение раз в 40 секунд. Но команда, с помощью которой они будут проверять свою статистику уровня, — это вставка, которая попала в это время. Теперь пользователям приходится ждать около 40 секунд, чтобы активировать эту команду, или даже если они этого не сделали, если они ввели что-то более 40 секунд назад, они не смогут активировать команду, пока не пройдет еще 40 секунд.
if (message.guild.id in stats === false) {
stats[message.guild.id] = {};
}
const guildStats = stats[message.guild.id];
if (message.author.id in guildStats === false) {
guildStats[message.author.id] = {
xp: 0,
level: 0,
last_message: 0,
};
}
const userStats = guildStats[message.author.id];
userStats.xp = random1.int(80, 100);
if (Date.now() - userStats.last_message > 40000) {
userStats.last_message = Date.now();
const rankS = '745901272506302484';
const rankA = '744810702845378680';
const rankB = '744835558991200367';
const rankC = '750739926286336081';
const rankD = '744810818771615745';
const rankE = '744810822982959106';
const rankF = '744810963558989844';
const xpToNextLevel =
5 * Math.pow(userStats.level, 1) 100 * userStats.level 100;
if (userStats.xp >= xpToNextLevel) {
userStats.level ;
if (userStats.level >= 35) {
message.member.roles.add(rankS);
}
if (userStats.level >= 25) {
message.member.roles.add(rankA);
}
if (userStats.level >= 15) {
message.member.roles.add(rankB);
}
if (userStats.level >= 10) {
message.member.roles.add(rankC);
}
if (userStats.level >= 7) {
message.member.roles.add(rankD);
}
if (userStats.level >= 5) {
message.member.roles.add(rankE);
}
if (userStats.level >= 1) {
message.member.roles.add(rankF);
}
const Embed5 = new Discord.MessageEmbed()
.setAuthor(
message.author.username '🎖️' userStats.level,
message.author.displayAvatarURL()
)
.setDescription('You just leveled up to ' userStats.level)
.addField(
'Keep up the work',
'Text/VC/Post stuff in the server to gain more XP.'
)
.setColor(0xff5733)
.setFooter('Type Ahri level to check you level card.');
userStats.xp = userStats.xp - xpToNextLevel;
client.channels.cache.get('743135573530902701').send(Embed5);
}
const args1 = message.content.slice(prefix.length).split(' ');
const command1 = args1.shift().toLowerCase();
if (command1 === 'level') {
const Embed6 = new Discord.MessageEmbed()
.setAuthor(
'Level card for ' message.author.username,
message.author.displayAvatarURL()
)
.addField('Current level ', userStats.level, true)
.addField('Current exp ', userStats.xp, true)
.addField('Exp needed for next level ', xpToNextLevel)
.setColor(0xff5733);
userStats.xp = userStats.xp - xpToNextLevel;
client.channels.cache.get('743135573530902701').send(Embed6);
jsonfile.writeFileSync('stats.json', stats);
console.log(message.author.username ' now has ' userStats.xp);
console.log(xpToNextLevel ' XP needed for next level.');
}
}
Основная проблема в том, что я должен вытащить это (Embed6) из этих 2 скобок с конца. Но я не могу. Когда я вытаскиваю его, он не может связать свои объекты с константами, которые находятся внутри скобок.
Комментарии:
1.Как человек, который начинал
discord.js
до изучения JavaScript или каких-либо базовых основ кодирования, я настоятельно рекомендую вам воздержаться от этого, прежде чем изучать основы JS.2. @Lioness100 хорошо, спасибо. Тогда я сначала начну изучать JS и его основы, прежде чем выполнять какую-либо работу с discord.js
3. @assassignshay круто! Очевидно, вы можете узнать все, что захотите, это была просто рекомендация. Удачи!