当前位置: 首页 > 知识库问答 >
问题:

使用来自mysql的数据时发送多个嵌入而不是一个嵌入的不和谐Bot

南宫凯康
2023-03-14

嘿,所以我为minecraft服务器编写了一个不和谐机器人,它可以显示服务器上玩家的前10个游戏时间。但它不是发送一个嵌入它发送10个嵌入,一个为每一个球员在10行我查询任何帮助将被主持!


var now = new Date();
var playtimes = '../cost of ballin/PLAYTIMES/playtime-' + now.getFullYear() + "-" + now.getMonth() + "-" + now.getDate() + '.txt'

client.on("message", (msg) => {
    if (msg.content == prefix + "pt") {
        con.query("SELECT DAYS,NAME,MINUTES,HOURS FROM playtimes ORDER BY DAYS DESC LIMIT 10",
            function(err, result) {
                if (err) throw err;
                Object.keys(result).forEach(function(key) {
                    var row = result[key];
                    fs.appendFileSync(playtimes, "Player Name: " + row.NAME + " Days: " + row.DAYS + " Hours: " + row.HOURS + " Minutes: " + row.MINUTES + "\r\n")
                    var file = fs.readFileSync(playtimes)
                    const embed = new Discord.MessageEmbed()
                        .setColor('#000000')
                        .setTitle('Playtime Leaderboard')
                        .setDescription(playtimes)
                    wait(10000)
                    channel.send(embed);
                })

            }
        );
    }
});

共有1个答案

司徒焕
2023-03-14

我在这里看到的问题是,每次运行.foreach()循环时,您都在执行channel.send()

每次运行它时,它都会发送一条消息。相反,您应该做的是创建某种对象,存储从查询中获得的统计数据,然后在.foreach()循环完成后发送消息。例如:

var now = new Date();
var playtimes = '../cost of ballin/PLAYTIMES/playtime-' + now.getFullYear() + "-" + now.getMonth() + "-" + now.getDate() + '.txt'

client.on("message", (msg) => {
    if (msg.content == prefix + "pt") {

        let playTimeStats = {} //create a dictionary for the stats

        con.query("SELECT DAYS,NAME,MINUTES,HOURS FROM playtimes ORDER BY DAYS DESC LIMIT 10",
            function(err, result) {
                if (err) throw err;
                Object.keys(result).forEach(function(key) {
                    var row = result[key];
                    fs.appendFileSync(playtimes, "Player Name: " + row.NAME + " Days: " + row.DAYS + " Hours: " + row.HOURS + " Minutes: " + row.MINUTES + "\r\n")
                    var file = fs.readFileSync(playtimes)
    
                    playTimeStats[row.NAME] = {
                        "Days": row.DAYS,
                        "Hours": row.HOURS,
                        "Minutes": row.MINUTES
                    } //add the stats to the dictionary                   

                })
            }
        );

//make an embed here for the stats, and then send it

    }
});

我还没有为你写好所有的代码,但是我已经添加了我认为你需要开始的东西...我已经添加了字典和如何添加元素到它,你只需要制作和发送嵌入。希望这有帮助!

 类似资料:
  • 如何在一条消息中发送多个嵌入?像这样发送多个: 输出: 我找不到任何关于发送多个嵌入的文档,在discord.js文件中提到了它,发送了一个嵌入列表。虽然我试过这个,但它也不起作用。

  • 我试着用阿凡达和它对我的TypeError:guildMember说的话来嵌入欢迎信息。displayAvatarURL不是一个函数

  • 我想为我的存储库创建集成测试。生产数据库是 Sybase,它由多个目录组成,其中有多个模式。 在我的代码中,我使用多个查询,在不同的目录中选择数据: 因此,对于测试,我想创建嵌入式数据库,如H2、HSQLDB或其他不同的数据库。我试图找到一种可以让我用多个目录来模拟prod数据库的方法,但我无法实现。请提供建议并提出解决方案。 我正在用java / spring编写应用程序。这里的另一个技巧是我的

  • 这是我到目前为止的代码,但atm我在“.settitle”oor处出现了“Expression expected”的问题,只是在嵌入的第一节。我不知道它想让我把什么放在上面。 完整代码: 我放入了完整的代码,因为它与原始代码(https://github.com/richardkriesman/discord-logger/blob/master/server.js)有些不同,但目前的主要问题是“

  • 我只是想给加入服务器的新成员写一封欢迎信。我想在每次新成员加入时发送嵌入。但是,未发送嵌入。有人能帮我吗? 这是我的代码: 谢谢

  • 问题内容: 我有一个sqlhelper类,其中包含一个重载的ExecuteNonQuery:一个仅包含一个参数(commandText),另一个仅包含两个参数(commandText,SqlParameter [])。 假设我有一个没有用户交互的独立控制台应用程序,并且我将调用一个存储过程,该存储过程将仅使用3个参数更新一个表,如果我可以轻松地构建字符串并使用SqlParameter[],有什么好