I've found that if I set clantalk/ordertalk/guildtalk (whatever you want to call the channel) to keephistory, no matter what order/clan the person is in, they can see all order/clan histories.
I've fixed this by adding a new char to the channel struct called 'clan' and so it only displays the history if this equals the persons order/clan name. Which works great. "clan a" person can only see things in the history said by other people of "clan a" and "clan b" person can only see things in the history said by other people of "clan b"
Problem being: If "clan a" talks and talks and talks, it wipes out "clan b's" history. Once it gets to MAX_CHANHISTORY