I ran across the same problem with heals from bots. I would suggest making changes just to the bot code to fix bot specific issues, however.
I use GetAggroCount() for clients to determine if they are engaged in combat as clients don't use a hate list unless they are AI controlled, and they'll still have an aggro count even if they are.
example:
Code:
// is target engaged?
bool tarIsEngaged = tar->IsClient() ? tar->CastToClient()->GetAggroCount() : tar->IsEngaged();