我最近使用 discord.js v12 制作了一个 Discord 机器人,但我无法为该机器人设置状态。
这是代码:
client.user.setPresence({ game: { name: '.help' }, status: 'online' });
错误是: TypeError: Cannot read property 'setPresence' of null
。
原文由 Yasir 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近使用 discord.js v12 制作了一个 Discord 机器人,但我无法为该机器人设置状态。
这是代码:
client.user.setPresence({ game: { name: '.help' }, status: 'online' });
错误是: TypeError: Cannot read property 'setPresence' of null
。
原文由 Yasir 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试在 client.on('ready', () => {})
部分设置存在:
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setPresence({
status: 'online',
activity: {
name: ".help",
type: "PLAYING"
}
});
});
快速解释:
存在是你正在设置的,它由多个变量组成。
The status
can be online
, idle
, dnd
, or invisible
. (dnd 是请勿打扰)
这里的另一个变量是 activity
。它是一组两个变量: name
和 type
。
name
是机器人正在做的事情。这是您选择的字符串。 type
是另一个可以帮助它显示为的东西。 It can be "PLAYING"
, "STREAMING"
, "WATCHING"
, "LISTENING"
, and "CUSTOM_STATUS"
.
原文由 GabRio Blu 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
如果您在这里阅读 客户端 类文档,您可以看到
user
属性的类型具有类型?ClientUser
和?
这意味着它在前面可能未定义(这是一个可选值)。如果您访问
ClientUser
文档,它说它“代表登录客户端的 Discord 用户”。我猜如果客户端还没有完全登录,那么
user
属性将是未定义的。先调用client.login(token)
,这是一个 异步 函数,然后就可以改变存在了。这意味着,使用承诺:
您可能还想查询
client.user
在继续以防止崩溃之前以任何一种方式定义。我怀疑您现有代码不起作用的原因是因为如果您没有在登录函数的回调中设置存在,则在其余代码运行时您还没有完成登录。以下将导致错误: