Discord.Страницы реакции JS | MySQL

#javascript #mysql #discord.js

Вопрос:

База данных Это всего лишь набор тестов.

Не по теме: Если кто-то хочет сделать это намного чище, я был бы благодарен.

Тема:
Попытка настроить страницы для моей команды на рынке. БД выше.
Прямо сейчас я использую цикл FOR для выполнения первых 10.
Я ничего не сделал с Discord.Сообщения о реакции JS или страницы в целом.
Прямо сейчас я совершенно не обращаю внимания на то, что я должен пытаться сделать.
Команда полного списка в ссылке «первые 10«.
Если вам понадобятся еще изображения или другой блок кода, дайте мне знать. Я готов потратить на это время.

 switch(args[1]) {
    case 'common':
        con.query(`SELECT * FROM market WHERE rarity = 'common'`, (err, rows) => {
            if (err) throw err;

            for (i = 0; i < rows.length; i  ) {
                if ((i 1) <= 10) {
                    Listing.addField(rows[i].username, `**[${rows[i].sellID}]**: **${rows[i].bun}**: ${rows[i].price}`);
                }
            }
            message.channel.send(listing);
        });
    break;
}
 

Ответ №1:

Лучше использовать ловец реакций, но если это простая команда, вы также можете использовать обработчики. Нравится

 let YourEmbed = //The embed
message.channel.send(YourEmbed).then(msg => {
    message.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] }).then( emojis => {
        const reaction = emojis.first();
        if (reaction.emoji.name === '➡️') {
            let NewEmbed = //The previous embed but with changed data
            msg.edit(NewEmbed);
        }
    });
});
 

Вам не нужно доставать все предметы. Вы можете получать 10 каждый раз. Нравится

 con.query(`SELECT * FROM market WHERE rarity = 'common' LIMIT 10`, (err, rows) => {
    //the rest
 

В следующий раз ты сможешь это сделать

 con.query(`SELECT * FROM market WHERE rarity = 'common' LIMIT 10 OFFSET 10`, (err, rows) => {
    //The rest
 

Вы должны поместить его в функцию, чтобы облегчить доступ к нему. Нравится:

 getRows = (rarity, limit, min) => {
    if(!min){min = 0}
    con.query(`SELECT * FROM market WHERE rarity = ${rarity} LIMIT ${limit} OFFSET ${min}`, (err, rows) => {
    if(!err){
        return(rows);
    }
}
 

Но после всего этого я предлагаю вам использовать кэшер реакции

Комментарии:

1. Извините за поздний ответ. Спасибо за ответ. Хотя мне бы хотелось немного помочь. Я не понимаю, как включить это в мой текущий код . Я думаю, что понимаю, как использовать смещение, но я хотел бы знать; как я мог бы поместить кэшер реакции в свой код, потому что я не вижу, как он будет работать в настоящее время, если я просто вставлю его. Возможно, я упускаю это из виду или просто не совсем понимаю. Еще раз спасибо за ответ, я постараюсь, чтобы это сработало.

2. @Lexy Я предлагаю добавить для этого отдельную функцию. Лучше, если вы поместите функцию в другой файл и импортируете ее. Таким образом, он будет выглядеть чище. например, в query.js вы можете поместить опцию запроса. Затем вызовите его leaderboard.js , откуда вы можете поместить функцию для отправки встраивания и его редактирования. Наконец, импортируйте его на свою главную страницу и поместите функцию внутри switch..case используемой вами. Кстати, пожалуйста, обратите внимание в своем коде, который вы используете RichEmbed , который устарел и заменен на MessageEmbed