javascript - 机器人找不到我的一个公会成员
问题描述
我创建了一个机器人来在我的服务器中执行简单的任务。我有3个成员,只有我和我的朋友。
我guild = client.guilds.cache.get("guildid")
用来获取公会对象和guild.members.cache.get("userid")
成员对象。这对我和我的一个朋友来说很好,但另一个没有返回。我已经三次检查了 ID 是否正确。
有谁知道为什么我的机器人无法检测到他?他已经在这里待了几个月,所以这不是新成员的问题。
解决方案
正如 Elitezen 所提到的,原因可能是用户未缓存,因此您需要fetch()
改为缓存。
guild.members
返回具有方法的GuildMemberManagerfetch()
。根据您的评论,您已经知道它返回的是承诺而不是 GuildMember,因此您需要先解决它。
您可以使用.then()
:
const guild = client.guilds.cache.get("guildid")
guild.members.fetch("userid")
// the fetched member is available inside this "then"
.then(member => {
member.roles.add(role)
})
// log if there was an error
.catch(console.error)
或者你可以使用 async/await;只需确保“父”函数是异步函数:
const guild = client.guilds.cache.get("guildid")
try {
const member = await guild.members.fetch("userid")
member.roles.add(role)
} catch(err) {
console.error(err)
}
推荐阅读
- r - 基于先前事件的变量
- nestjs - NestJs 应用程序未连接到生产中的 Angular 应用程序
- javascript - 在显示隐藏的 div 之前询问通用密码
- pine-script - Pinscript DC 分辨率
- python - 使用 python/selenium 从列表中具有特定标题的第一个元素获取文本
- javascript - 试图让一个水平滚动的网站在移动设备上工作
- azure - Azure AD 是否支持使用可映射到自定义权限的自定义角色进行多租户用户管理?
- kotlin - 通过比较对数组进行排序
- r - R ggplot未在图中显示完整时间序列
- sql-server - 将 SSL 证书添加到云基础架构上的 SQL Server 数据库