мой код node.js иногда работает, иногда не работает - PullRequest
0 голосов
/ 30 января 2020

Я разрабатываю бота для телеграммы node js и телеграфа. Когда член группы добавляет члена в группу, этот код выполняется

bot.on('new_chat_members', (ctx) => {
    if(ctx.message.new_chat_members[0]['is_bot'] == false){
        Add.insertForcedAddUsersList(ctx.message.chat.id, ctx.message.from.id, ctx.message.from.first_name, ctx.message.from.last_name, ctx.message.new_chat_members[0]['id']);
    }
});

И затем эта функция работает:

var insertForcedAddUsersList = (chatId, userId, firstName, lastName, addedUserId) => {
    var sql = "SELECT * FROM forced_add_users_list WHERE chat_id="+chatId+" AND user_id="+userId;
    Model.pool.query(sql, function (err, result) {
        if (err)
            console.log(err);
        else {
            if(result[0]){
                var addedUsersIdArray = result[0]['added_users_id'].split('|');
                var repetitiveUserFlag = false;
                for(var i=0;i<addedUsersIdArray.length;i++){
                    if(addedUsersIdArray[i] == addedUserId){
                        repetitiveUserFlag = true;
                        break;
                    }
                }
                if(repetitiveUserFlag == false){
                    sql = "UPDATE forced_add_users_list SET first_name="+"'"+firstName+"',last_name='"+lastName+"',added_number='"+(parseInt(result[0]['added_number'],10)+1)+"',added_users_id='"+result[0]['added_users_id']+"|"+addedUserId+"' WHERE chat_id="+chatId+" AND user_id="+userId;
                    Model.pool.query(sql, function (err, result2) {
                        if(err)
                            console.log(err);
                        else
                            canSendMessage(chatId, userId, firstName, lastName, parseInt(result[0]['added_number'],10)+1);
                    });
                }
            }else{
                sql = "INSERT INTO forced_add_users_list(chat_id, user_id, first_name, last_name, added_number, added_users_id) VALUES(" + chatId + ",'" + userId +  "','" + firstName + "','" + lastName + "','1','" + addedUserId + "')";
                Model.pool.query(sql, function (err, result2) {
                    if(err)
                        console.log(err);
                    else
                        canSendMessage(chatId, userId, firstName, lastName, 1);
                });
            }
        }
    });
};

Проблема заключается в том, когда я добавляю 3 или более членов в группу в в то же время, иногда первый и последний добавляются в базу данных, а иногда все они добавляются. Также иногда команда INSERT SQL работает дважды вместо одного раза. В чем проблема. Я новичок в node js.

...