You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MySQL查询结果填入discord.js的embed消息对应字段

解决方案

核心逻辑是在info命令触发时先执行数据库查询,拿到统计结果后再构建并发送embed消息,代码修改如下:

第一步:建议先将单连接替换为连接池(稳定性更高,避免连接断开导致查询失败)

把原来的连接创建代码替换为:

const mysql = require('mysql');
// 创建连接池
const pool = mysql.createPool({
    host     : 'private',
    port     : 'private',
    user     : 'private',
    password : 'private',
    database : 'private',
    charset  : 'private',
    connectionLimit: 10 // 按需调整连接数上限
});

第二步:修改info命令处理逻辑

if(message.content.startsWith(prefix + 'info')) {
    // 先执行数据库查询,此处假设你的玩家表名为players,性别字段为gender,存储值对应为male、female、little_girl,可根据实际业务修改
    const querySql = `
        SELECT 
            COUNT(IF(gender = 'male', 1, NULL)) AS male_count,
            COUNT(IF(gender = 'female', 1, NULL)) AS female_count,
            COUNT(IF(gender = 'little_girl', 1, NULL)) AS girl_count,
            COUNT(*) AS total_players
        FROM players
    `;

    pool.query(querySql, (error, results) => {
        // 查询错误处理
        if (error) {
            return message.channel.send('查询数据失败,请稍后重试');
        }
        const data = results[0];
        
        // 拿到查询结果后再构建embed
        const sembed = new Discord.MessageEmbed()
            .setTitle('Info:')
            .setThumbnail('png')
            .setColor('GOLD')
            .addFields(
                {name: 'Players:', value: data.total_players.toString()},
                {name: '👨🏻', value: data.male_count.toString(), inline: true},
                {name: '👩🏻', value: data.female_count.toString(), inline: true},
                {name: '👧🏻', value: data.girl_count.toString(), inline: true},
            )
            .setTimestamp();

        message.channel.send({embeds: [sembed]});
    })
}

注意事项

  • 上面的SQL语句里的表名、字段名、性别枚举值需要替换为你实际数据库的对应配置
  • 如果你仍然要使用原来的单连接写法,把pool.query替换为connection.query即可,但是单连接长期运行容易出现断开问题,更推荐使用连接池
  • 因为数据库查询是异步操作,必须把embed的构建和发送逻辑写在查询回调内部,否则会出现还没拿到数据就已经发送了embed的问题

内容的提问来源于stack exchange,提问作者I need Help

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:15:03