This is going to run into the same problem I had with telling the difference between bows and crossbows.  While an ammo check system would be ideal, I wasn't able to get it working.  I did, however, have success using a "has_flag" system of giving items a special "CROSSBOW" flag in the json to help the game tell them apart.  It's not the most elegant system, but it does work; I stopped working on my PR before I committed it to GitHub but in my testing this method was successful.

Another possibility could be to have mutually exclusive mod slots for bows and crossbows, eg only place crossbow-only mods in slots that no bow possesses, and vice-versa.  Although Kevin mentioned in a comment on my PR that crossbows may end up being moved to the "rifle" skill, so this approach has the potential to turn around and bite us.