gpt4 book ai didi

javascript - 如何解决转发消息的问题?

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:54 25 4
gpt4 key购买 nike

我使用“botact”库创建了一个聊天机器人,但是当我尝试在 vk-community API 工作页面上验证我的机器人时,我在“Windows PowerShell”中收到错误(此处我为机器人启动了服务器):

TypeError: Cannot read property 'fwd_messages' of undefined
at Botact.getLastMessage (C:\Users\whoami\Desktop\Bot-test\node_modules\botact\lib\utils\getLastMessage.js:2:11)
at Botact.module.exports (C:\Users\whoami\Desktop\Bot-test\node_modules\botact\lib\methods\listen.js:29:28).

文件“getLastMessage.js”包含以下代码:

    const getLastMessage = (msg) => {
if (msg.fwd_messages && msg.fwd_messages.length) {
return getLastMessage(msg.fwd_messages[0])
}

return msg
}

module.exports = getLastMessage

最佳答案

所以我对 botact 了解不多,但根据代码,当你点击 / 路由时,你需要传递一个包含 的正文对象属性。

现在,由于这是 vk bots 的机器人框架,它可能会自动发送请求正文。您可以通过记录请求正文来确定。

server.post('/', async (req,res)=>{
console.dir(req.body);
await bot.listen(req, res);
});

/lib/methods/listen.js :

const { type, secret, object, group_id } = framework === 'koa'
? args[0].request.body
: args[0].body
...
...
...
const { events, middlewares } = actions
const forwarded = this.getLastMessage(object)

现在,当您执行 bot.listen 时,将 req 作为第一个参数传递。和 { type, Secret, object, group_id } 这些字段从 req.body 中进行重组。

然后object被传递给getLastMessage函数。

因此,对于请求正文,您至少需要

{ "object": {} }

这是我将其添加到 Postman 的请求正文后得到的 200 OK 输出

postman request example

POC 代码:

const express = require("express");
const bodyParser = require("body-parser");
const { Botact } = require("botact");
const server = express();
const bot = new Botact({
token: "token_for_my_group_i_just_hided_it",
confirmation: "code_for_my_group_i_just_hided_it"
});
server.use(bodyParser.json());

server.post("/",bot.listen);
server.listen(8080);

关于javascript - 如何解决转发消息的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com