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

discord.js从v12升级至v13后机器人加入服务器欢迎消息失效及弃用警告问题

Discord.js v13 服务器欢迎消息失效问题修复

嘿,我看了你的代码和报错信息,这完全是discord.js从v12升级到v13后的API变更导致的,下面给你梳理清楚问题和修复方案:

核心问题点

  • 频道集合访问逻辑变了:v13里guild.channels是一个GuildChannelManager管理对象,不再是直接可遍历的集合,必须通过cache属性才能访问已缓存的频道列表
  • 频道类型枚举更新:文本频道的类型标识从'text'改成了全大写的'GUILD_TEXT',v13统一使用枚举值来标识频道类型
  • 消息发送格式变更:v13中发送Embed不能直接传对象,必须把Embed放在embeds数组里作为参数传入
  • 另外你看到的message事件弃用警告,虽然和当前欢迎消息无关,但也提一句:如果代码里还有bot.on('message', ...)的逻辑,要改成bot.on('messageCreate', ...),这是v13的强制要求

修改后的完整代码

const { MessageEmbed, WebhookClient } = require("discord.js");
const { channels } = require("../../app");
const { prefix, color } = require("../../botconfig/config.json");
module.exports = async (bot) => {
 bot.on('guildCreate', (guild) => {
 let channelToSendTo;
 // 访问channels的cache属性遍历频道
 guild.channels.cache.forEach(channel => {
 // 使用GUILD_TEXT判断文本频道类型
 if (channel.type === 'GUILD_TEXT' && !channelToSendTo && channel.permissionsFor(guild.me).has('SEND_MESSAGES')) channelToSendTo = channel;
 });
 if(!channelToSendTo) return;
 let newGuildEmbed = new MessageEmbed()
 .setColor(color)
 .setTitle(`<:Ela_E:888341177571639297> Thank you for adding me!`)
 .addField(`Premium`, `[Buy](https://elabot.top/premium)`, true)
 .addField(`Website`, `[Website Page](https://elabot.top)`, true)
 .addField(`Have questions?`, `[Join the support server](https://elabot.top/support)`, true)
 // v13要求Embed放在embeds数组中发送
 channelToSendTo.send({ embeds: [newGuildEmbed] })
 })
}

把这些改动都应用后,你的服务器欢迎消息功能就能正常工作了,那个弃用警告也会在你把所有message事件改成messageCreate后消失。

内容的提问来源于stack exchange,提问作者MihaiT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:03:14