Использование бота telegram в качестве живого чата с nodeJS - PullRequest
0 голосов
/ 15 апреля 2020

В меню бота у меня есть опция онлайн-чата со мной. Если пользователь нажимает эту кнопку, бот сохраняет это состояние пользователя как chatMode. Сценарий похож на то, что если состояние пользователя chatMode, каждое его сообщение должно быть переслано мне, и когда я отвечу на это сообщение, мой ответ должен быть отправлен этому пользователю - все эти сообщения должны быть v ie my бот. Этот сценарий похож на служебный бот @LivegramBot. Можете ли вы дать подробный ответ о том, как достичь этого результата?

Кроме того, есть ли способ сгруппировать этих пользователей, потому что, если будет больше пользователей, мои разговоры будут смешиваться на моей стороне бота?

Это то, что я пытаюсь:

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 голосов
/ 15 апреля 2020

Каждый сокет автоматически присоединяется к комнате по умолчанию с помощью собственного идентификатора. документы: http://socket.io/docs/rooms-and-namespaces/#default-комната

Таким образом, вы можете подключиться к сокету по 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);
  });
});
...