我正在研究电报机器人项目,我需要确定收到的rugarch:::.information.test(likelihood(fit@mfit$ufit),
nObs = nrow(fitted(fit@mfit$ufit)),
nPars = 4)$AIC
文件的类型。
例如,一条消息将具有:
JSON
据此我知道{
"update_id": 12345,
"message": {
"message_id": 123,
"from": {
"id": 123456,
"is_bot": false,
"first_name": "John",
"last_name": "Tan",
"username": "John123",
"language_code": "en-SG"
},
"chat": {
"id": 123456,
"first_name": "John",
"last_name": "Tan",
"username": "John123",
"type": "private"
},
"date": 1533567761,
"text": "/start",
"entities": [
{
"offset": 0,
"length": 6,
"type": "bot_command"
}
]
}
}
存在。在这种情况下:
message.message_id
但是,其他类型的if (e.postData.contents.message.message_id) {
// would run fine
}
将没有消息对象。
javascript的其他来源推荐了此功能
JSON
但是,在我什至无法运行此功能之前,Google Apps脚本似乎都会抛出function isMsg(fn) {
try {
fn;
return true;
} catch(e) {
return false;
}
}
。我这样运行:
TypeError
还有其他解决方法吗?
编辑:T.J. Crowder在下面回答了我的问题。这个想法是,如果还缺少高级对象,则需要“防护”。为了防止typeError:无法读取未定义的“内容”,请使用:
if (ifMsg(e.postData.contents.message.message_id)) {
// exception
}
{
"message": "Cannot read property \"message_id\" from undefined.",
"name": "TypeError"
}
对于我来说,这对我有用:
if(level1 && level1.level2 && level1.level2.level3){
//should run fine
}
这对我来说是有效的,因为内容始终存在。我发现它解决了我的问题。
答案 0 :(得分:0)
您需要像这样使用警卫:
if (e.postData.contents.message && e.postData.contents.message.message_id) {
另请参阅this question's answers;那个发问者对那样的防卫不满意。