For get player role for the moment you can use lua: http://wowprogramming.com/docs/api/UnitGetAvailableRoles
In the next version I have added "AvailableRoles" function, you can use it like:
List<WoWPlayer> playerList = ObjectManager.GetObjectWoWPlayer();
bool canTank, canHealer, canDps;
string debuffName = "SpellNameInEnglish";
foreach (var player in playerList)
{
if (player.IsValid && ObjectManager.Me.PlayerFaction == player.PlayerFaction)
{
player.AvailableRoles(out canTank, out canHealer, out canDps);
Logging.Write("[MyPlugin] Player " + player.Name + " canTank: " + canTank + ", canHealer: " + canHealer + ", canDps: " + canDps);
if (player.HaveBuff(debuffName))
Logging.Write("[MyPlugin] Player " + player.Name + " have debuff " + debuffName);
}
}