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

Discord.js报message事件弃用警告且await发送embed失效如何解决

问题修复方案

1. 解决弃用警告

你收到的The message event is deprecated. Use messageCreate instead警告仅需修改客户端事件监听的事件名即可:
将你代码中事件监听的写法

client.on('message', async (message) => {

替换为:

client.on('messageCreate', async (message) => {

即可完全消除该弃用提醒。

2. 修复await逻辑异常问题

你之前修改send调用位置的操作不符合你的原始业务逻辑(原始逻辑是把建议发送到名为Suggestion的专属频道,不是发送到触发命令的当前频道),且你混合使用await和.then会导致异步时序混乱,同时缺少频道存在性判断,一旦找不到对应频道会直接抛出异常导致后续message.delete()不执行。
以下是修正后的完整业务代码:

// 顶部事件监听先替换为messageCreate
client.on('messageCreate', async (message) => {
    if (message.content.startsWith("!Suggestion")) {
        var str = message.content.slice(" !Suggestion".length);

        // discord.js v13及以下版本保留该写法,v14+版本替换为Discord.EmbedBuilder即可
        const embed = new Discord.MessageEmbed()
            .setThumbnail('Png') // 此处建议替换为实际的图片资源链接
            .setTitle("Suggestion")
            .setColor('#151515')
            .addFields(
                { name: "提交建议的用户:", value: `<@!${message.author.id}>` },
                { name: '建议内容:', value: `${str}` },
                { name: '触发频道:', value: `${message.channel}` },
            )
            .setTimestamp()
            .setFooter("你可以通过底部表情对该建议进行投票")
        
        // 提前判断频道是否存在,避免调用send时报错
        const suggestionChannel = message.guild.channels.cache.find(c => c.name === 'Suggestion')
        if (!suggestionChannel) return message.reply('未找到建议接收频道,请联系管理员配置')

        // 去掉.then混用逻辑,统一用await处理异步操作保证时序正常
        const embedMessage = await suggestionChannel.send({ embeds: [embed] })
        await embedMessage.react("✅")
        await embedMessage.react("❌")
        
        await message.delete();
    }
});

如果你使用的是discord.js v14及以上版本,仅需将Discord.MessageEmbed替换为Discord.EmbedBuilder,其余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.10.01 08:54:03