使用电报机器人与NodeJS进行实时聊天

时间:2020-04-15 13:45:36

标签: node.js telegram-bot livechat node-telegram-bot-api

在bot菜单中,我有一个在线聊天选项。如果用户单击此按钮,则bot会将用户状态保存为chatMode。这种情况就像用户状态为chatMode时,他的每条消息都应该转发给我,而当我回复此消息时,我的答案应该发送给该用户-所有这些通信都应视为我的机器人。这种情况就像服务机器人@LivegramBot。您能否提供详细的答案以了解如何获得此结果?

还有什么办法可以对这些用户进行分组,因为如果有更多的用户,我的对话将在bot的身边混在一起?

这就是我正在尝试的:

if (user.state === 'chatMode') {
            bot.forwardMessage(xx4775xxx, msg.from.id, msg.message_id);

        } else if (user.telegramId === xx4775xxx) {
            if (msg.reply_to_message) {
                bot.sendMessage(msg.reply_to_message.chat.id, msg.text)
            }
        }

但是这里if (msg.reply_to_message)的部分再次发送给自己。

1 个答案:

答案 0 :(得分:-1)

每个套接字通过自身ID自动加入默认房间。 docs:http://socket.io/docs/rooms-and-namespaces/#default-room

因此您可以使用以下代码通过id向套接字发出消息:

io.to(socketid).emit('message', 'for your eyes only');

if (io.sockets.connected[socketid]) {
    io.sockets.connected[socketid].emit('message', 'for your eyes only');
}

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log(socket.id);
    io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
  });
});