We would just need to implement a "color window" for bots. Basically ranges of colors the bot can see.
Oh, and to handle the intensity problem:
imagine each bot has a "base" color. This can be represented by a 3 part vector (RGB). To determine the new color of the reflected light and its intensity such and such far away, you'd do:
Divide RGB by 255. This is now the percentage of each color that the bot reflects.
Determine the light level where the bot is. That light intensity * RGB = color and intensity of reflected light (You could also multiply light intenisty by another %age color vector, for colored light in the sim).
Say a bot can see this new bot. Well, the colors it sees is our previous vector scaled back for the distance the light has had to travel from the reflecting bot to the seeing bot.
If all elements of our new RGB vector are visible to the seeing bot's window, then it can see that bot.
The only thing missing from that equation is consideration for the size of the reflecting bot. Small things seen far away are invisible basically (RGB = <0,0,0>)