在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)
的部分再次发送给自己。
答案 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);
});
});