Javascript 不和谐的存在
我最近使用Discord.js v12创建了一个Discord机器人,但我无法为该机器人设置状态 代码如下:Javascript 不和谐的存在,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我最近使用Discord.js v12创建了一个Discord机器人,但我无法为该机器人设置状态 代码如下: client.user.setPresence({game:{name:'.help'},状态:'online'}); 错误是:TypeError:cannotreadproperty'setPresence'of null如果您阅读这里的类文档,您可以看到user属性的类型前面有type?ClientUserwith?,这意味着它可能没有定义(这是一个可选值) 如果您访问Client
client.user.setPresence({game:{name:'.help'},状态:'online'});
错误是:TypeError:cannotreadproperty'setPresence'of null
如果您阅读这里的类文档,您可以看到user
属性的类型前面有type?ClientUser
with?
,这意味着它可能没有定义(这是一个可选值)
如果您访问ClientUser
文档,它会说它“代表已登录客户端的不协调用户”
我猜如果客户端尚未完全登录,那么user
属性将未定义。首先调用client.login(token)
,这是一个异步函数,然后可以更改状态
这意味着,使用承诺:
client.login(令牌)。然后((令牌)=>{
//现在定义了client.user
client.user.setPresence({
游戏:{name:'.help'},
状态:“在线”,
});
});
您可能还希望在继续之前查询客户端。用户是以任何一种方式定义的,以防止崩溃
我怀疑您的现有代码无法工作的原因是,如果您没有在登录函数的回调中设置状态,那么在其余代码运行时,您还没有完成登录。以下操作将导致错误:
client.login(令牌);//坏-这是异步的
client.user.setPresence(…)
这不是一个很好的答案,但它太大了,无法在评论中给出。如果要在bot联机时设置正确的状态,可以通过Discord.Client()
构造函数本身定义存在。其中一个是存在
//在代码的开头:
const client=new Discord.client({
出席:{
状态:“在线”,
活动:{
名称:'.help',
键入:“播放”,
},
},
});
您可以使用.setActivity()
函数
client.user.setActivity(“.help”{type:“PLAYING”})//类型可以是“PLAYING”、“waiting”、“STREAMING”、“listing”
在你的生活中使用这个
client.on('ready')()=>{
client.user.setActivity(“.help”{type:“PLAYING”})
})
尝试在客户端中设置状态。在('ready',()=>{})
部分:
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setPresence({
status: 'online',
activity: {
name: ".help",
type: "PLAYING"
}
});
});
快速解释:
存在是您正在设置的,它由多个变量组成
状态可以是联机
,空闲
,dnd
,或不可见
。(dnd为请勿打扰)
这里的另一个变量是活动
。它由两个变量组成:name
和type
名称
就是bot正在做的事情。这是您选择的字符串。
类型
是另一个帮助它显示为的东西。它可以是“播放”
,“流”
,“观看”
,“收听”
,以及“自定义状态”
希望我能帮上忙!!您是如何定义客户端的
?这不会给我一个错误,但也不会设置bot上的状态。