如何在Discord的MessageEmbed中创建可点击的语音频道链接
解决Discord MessageEmbed中语音频道可点击链接的问题
我来帮你搞定这个语音频道链接的问题!你写的代码思路是对的,但有两个小细节可能导致链接没生效,咱们一步步修正:
1. 修正频道ID的属性名
在Discord.js v13及以上版本中,频道ID的属性名是**channelId**(驼峰命名,小写的d),而不是你用的channelID。如果你的Discord.js版本是较新的,channelID会返回undefined,直接导致链接无效。
2. 适配新版本的Embed发送格式
Discord.js v13+开始,发送Embed需要用{ embeds: [embed] }的格式包裹,而不是直接传入Embed对象,旧写法在新版本里会无法正确渲染。
修正后的完整代码
// 检查用户是否在语音频道 if (!message.member.voice.channel) { return message.channel.send("你还没有加入任何语音频道哦!"); } // 删除原消息(记得确保机器人有消息管理权限) message.delete().catch(err => console.error("删除消息失败:", err)); // 用模板字符串简化链接拼接 const voiceChannelLink = `https://discord.com/channels/${message.guild.id}/${message.member.voice.channelId}`; // 创建并发送带可点击链接的Embed const joinEmbed = new Discord.MessageEmbed() .setDescription(`[点击加入](${voiceChannelLink})`); message.channel.send({ embeds: [joinEmbed] });
额外注意事项
- 机器人需要拥有发送Embed和管理消息(如果要删除原消息)的服务器权限;
- 点击链接后,Discord会跳转到对应语音频道的页面,桌面端用户可以直接唤起客户端加入频道,移动端则会引导到频道界面。
内容的提问来源于stack exchange,提问作者Cahan uuu
相关产品推荐
相关产品推荐

