Traitor Pass (adapted)

I am using this adapted traitor pass for a while but sometimes people saying that they don’t get traitor but the traitor pass is removed.
Did I something wrong in this code?

I don’t know exactly but most of the time this code seems to work

function ITEM:OnEquip(ply, modifications)
hook.Add("TTTBeginRound", ply:UniqueID() .. "_traitor", function()

if ply:GetRole() == ROLE_INNOCENT then
    ply:PS_Notify('You have received your reward and been set to traitor!')

elseif ply:GetRole() != ROLE_INNOCENT then
    ply:PS_Notify('You will receive traitor on the next round!')