I thought on something like this...
mob
Police
verb
Key_Ban(mob/M in world)
set category = "Police"
set desc = "Key ban a player from the world."
if(!M) return
if(M.client)
var/X = input(usr, "Time") as num
Bans:Add(M.key)
Bans[M.key]="[M.client.address]"
del(M)
sleep(X)
Bans:Remove(M.key)
else
usr<<"You cant ban npc's."
1) Make it where It reads the day the person is banned, and make it where so and so has to put the date where he's unbanned, and every time client/New() occurs, make it check the date. and if it's his unban date, Unban.
2)Enable sleep_offline(See DM Ref)