Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不和谐的存在_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript 不和谐的存在

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

我最近使用Discord.js v12创建了一个Discord机器人,但我无法为该机器人设置状态

代码如下:

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上的状态。