tl;dr see below.
While it is possible for the bots to know the details of attacking mobs, you wouldnt write an AI script based on those details.
What I would have bots do is if there was incoming is:
1. hack the attacker. Even if they know what they have, they should still hack (only needs to be one of the online bots, you can choose the bot at random)
2. Analyse size of mob in comparison to visible units. This would involve:
a. Count total INN (if sent eta 5 ignore tractors/combines) and basics (h/y).
b. If mob sent > total INN + basics, take difference.
c. If difference > 0.2*other units (non-INN/basics) then assume real (number is arbitrary, could be different). (However, determine ratio of troop scores of attacker to target. If target has less than 0.05*troops score (non-INN only) of attacker (including INN), take 50% chance to assume mob is pure flak).
else assume real with 90% likelyhood (that is, for incoming that could be possibly be pure flak, assume 90% of the time that it is real)
3. If assumed fake, all bots to defend send fake.
If assumed real, bots send real defence. As willy said, if the first bot to send was going to send real, then all others to defend would be real. So far its been determined whether to send real or not so you dont get some fake, some real mobs at same inc.
If there is more incoming, the decision does not need to be changed, since real is only sent 50% of the time on first incoming, so real may be sent to following inc.
4. Determine which bots will send (regardless of real or fake). For all intents and purposes assume real. Take attacking route into consideration. If RPG, defend with SA. If an SA is online, they will send to match attacking troop score (assuming real). If they send all LET and still do not match troop score, then the second most appropriate bot will be locked in to send to provide adequate score, and so on.
5. Troop score of attacker will be assumed to be the maximum possible based on number of troops sent. Eg a striker send 100k troops when he has 10m striker and 10m apache, mob is assumed to be 100k apache. If stealth mob inc, the bots will know troop score due to stealth units. They can assume all stealth has been sent.
If stealth you can take chances with what to send. Eg POM. You can fake 50% of time anyway. If multiple stealth mobs show, pick one at random to defend real, and rest fake. Tier will determine how effective the bots are at detecting stealth rolls.
6. By now, which bots are to send are locked in. This all happens the tick the inc shows. Bots cannot send within 10-15 seconds of inc showing (allows for rushes). If stealth, the bots may assume with 50% probability inc was sent eta 4 rather than 5. Since the bots to send and whether they are real or not has been determined, the bots send as appropriate to defend inc depending on the eta of their units.
7. If multiple inc show the same time, the one that is easiest to defend (based on how easily troop score can be matched as per step 4) will be locked in first.
If a train, the first mobs are determined. Since the mobs will be sent to cover that inc, it can be assumed that 50% of the first defensive troops will survive to defend following inc. Then additional bots can send as required to match troop score for second tick (assuming only 20% of first attacker survives first tick)
NB. Bots dont have to send to match troop score. An effectiveness ratio can be determined between routes. If SA vs RPG, effectiveness can be something like 2, while RPG vs SA would be something like 0.2. Take the inverse, and thats the effective troops score sent. EG, defending RPG with SA, 1/2 = 0.5. If the maximum troop score of RPG mob is 100m, the SA sends troops with an 'effective' troop score of 100k, which is actually 100m*0.5 = 50m actual troop score.
And numbers are examples only.
Thats were I'd start anyway.
-----------
tl;dr
who cares anyway?