Задать вопрос
@Marro420

Как прервать запрос в mongoose?

у меня есть телеграм бот через которого я могу общаться с пользователями из базы данных mongoose, соединение с пользователем происходит если я сначала введу его chat.id, но у меня не получается прервать соединение, как это реализовать?

bot.on('message', msg => {
         
        //chatId который пишет боту
        const chatId = msg.chat.id
        // мой chatId
        const myId = 1396346856
         
        if(chatId === myId  ){
            /*если сообщение которое я ввел равно chatId пользователя из базы данных, то следующие сообщения будут отправляться этому пользователю*/ 
            Person
            .findOne({chat : msg.text })
            .then(person => {
               let userId = msg.text 
                
                bot.sendMessage(chatId, 'Соединение установлено')    
                bot.on('message', msg => {
                bot.sendMessage(userId, msg.text)
               })
               
            })    
            .catch()   
        } 
        // если это чат пользователя то его сообщения отправляются в мой чат с ботом
        else{
            bot.sendMessage(matId,msg.text)
        }
    })
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
// мой chatId (я админ)
const myId = 1396346856;
// chatId собеседника
let currentInterlocutorId;

bot.on('message', msg => {
    //chatId который пишет боту
    const chatId = msg.chat.id

    // если сообщение от меня (хозяина бота)
    if (chatId === myId) {
        // не будем мучать БД при каждом моем сообщении поэтому сначала проверим, похоже ли то что я написал на ID пользователя
        if (/^\d+$/.test(msg.text)) {

            /*если сообщение которое я ввел равно chatId пользователя из базы данных, то следующие сообщения будут отправляться этому пользователю*/
            Person
                .findOne({ chat: msg.text })
                .then(person => {
                    currentInterlocutorId = msg.text;
                    bot.sendMessage(mayId, 'Соединение установлено')
                })
                .catch()
        }

        // если я (хозяина бота) ввел "stop" общение прекращаем
        if (msg.text === "stop") {
            bot.sendMessage(mayId, 'Соединение разорвано');
            bot.sendMessage(currentInterlocutorId, 'Я от тебя устал, не пиши мне больше!!!');
            currentInterlocutorId = undefined;
        }

    }

    // если собеседник был выбран
    if (currentInterlocutorId) {
        // если пишу я
        if (chatId === myId) {
            bot.sendMessage(currentInterlocutorId, msg.text)
        }
        // если выбранный собеседник пишет мне
        else if (chatId === currentInterlocutorId) {
            bot.sendMessage(mayId, msg.text)
        }

    }


})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы