DiscordJS 13 个人资料斜杠命令:获取指定频道用户最后消息嵌入展示
实现方案
前置要求
- 机器人客户端启动时已注册
GUILD_MESSAGES意图,无该权限无法读取频道消息历史 - 机器人在自我介绍频道拥有「查看频道」、「读取消息历史」权限
实现代码
你可以直接将以下代码追加到你现有逻辑的DM状态判断之后,即可完成功能接入:
// 拉取用户自我介绍逻辑 const INTRO_CHANNEL_ID = "替换为你实际的自我介绍频道ID"; const introChannel = guild.channels.cache.get(INTRO_CHANNEL_ID); let introText = "`暂无发布的自我介绍`"; // 校验频道存在且为可发消息的文本频道 if (introChannel && introChannel.isText()) { // 拉取频道最近100条消息,频道活跃度高可适当放大limit参数 const recentMessages = await introChannel.messages.fetch({ limit: 100 }); // 过滤出目标用户发送的消息,取时间最新的第一条 const userLatestIntro = recentMessages.filter(msg => msg.author.id === member.id).first(); if (userLatestIntro) { // 超出500字截断避免Embed字段长度超限,可根据需求调整阈值 introText = userLatestIntro.content.length > 500 ? `${userLatestIntro.content.slice(0, 500)}...` : userLatestIntro.content; } } // 写入用户信息Embed embeduserinfo.addField("**❱ 自我介绍**", introText, false);
优化建议
如果你的自我介绍频道消息量很大,每次拉取全量消息历史响应速度慢,建议提前将用户发布的自我介绍内容存储到自建数据库中,查询时直接读库即可,性能和稳定性更高。
内容的提问来源于stack exchange,提问作者MetroVan Discord
相关产品推荐
相关产品推荐

