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

如何将MySQL查询结果读取到Discord机器人Embed消息并处理无结果场景

实现方案

核心逻辑说明

你需要将数据库查询逻辑嵌入到Discord消息事件的回调中,从用户发送的指令里提取查询参数,拿到数据库返回结果后再动态生成Embed卡片,同时增加空结果判断分支。

完整可运行代码

如果继续使用原生mysql回调写法,代码如下:

const mysql = require('mysql');
const { MessageEmbed } = require('discord.js');
// 数据库连接配置保持不变
const con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "mydb"
});
// 预先建立数据库连接,避免每次查询重复连接
con.connect(err => {
    if (err) throw err;
    console.log("数据库连接成功");
});
const prefix = '!'; // 替换成你自己的指令前缀
client.on('message', message => {
    // 忽略机器人自己发的消息
    if (message.author.bot) return;
    // 匹配指令格式 可将'查询'替换为你需要的指令触发词
    if (message.content.startsWith(prefix + '查询')) {
        // 提取用户输入的查询参数
        const args = message.content.slice(prefix.length).trim().split(/ +/);
        const queryParam = args[1];
        if (!queryParam) {
            return message.channel.send("请输入要查询的名称或ID");
        }
        // 执行数据库参数化查询
        const sql = 'SELECT * FROM customers WHERE name = ? OR id = ?';
        con.query(sql, [queryParam, queryParam], function(err, result) {
            if (err) throw err;
            // 判断查询结果是否为空
            if (result.length === 0) {
                return message.channel.send("未查询到匹配的用户信息");
            }
            // 取第一条匹配结果 可在SQL末尾加LIMIT 1优化查询性能
            const userData = result[0];
            // 动态生成Embed卡片
            const logo = ''; // 替换成你自己的logo地址
            const embed = new MessageEmbed()
                .setTitle(`名称是: ${userData.name}`)
                .addField('用户ID', userData.id)
                // 可根据你的表字段继续添加其他展示项
                .setThumbnail(logo);
            // 发送Embed
            message.channel.send({ embeds: [embed] });
        });
    }
});

注意事项

  • 如果你使用的是Discord.js v13及以上版本,需要将message事件替换为messageCreate事件,发送Embed的写法保持不变
  • 可以将mysql包替换为mysql2/promise,用async/await写法替代回调,代码可读性更高
  • 建议给数据库查询增加超时和异常捕获处理,避免数据库异常导致机器人崩溃

内容的提问来源于stack exchange,提问作者Kfir Ben SHimon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:10