icon = 'door.dmi'
icon_state = "closd"
density = 1
icon_state = "open"
density = 0
icon_state = "closd"
density = 1

Problem description:
The bump doesn't do anything, I've tried using procs, but still no effect.

Bump() is called when the object bumps INTO something.

What you want is the self-defined Bumped():

(Place the snippet in your source then change Bump() to Bumped() in the snippet you have shown)
In response to GhostAnime
I have no idea how that works 0_0 .. but it works ;) thanks, Ghost and Popisfizzy
In response to BeignetLover
Well, I can explain it to you how it works - who knows, the knowledge may come in handy for something else in the future.

The portion about atom/proc/Bumped() is where we define that the procedure Bumped() can be inherited for all /atom children (/area, /turf, /obj, /mob). This, I'm sure, you have figured out.

The children of /atom/movable are /obj and /mob as these two paths are the only mobile paths of /atom.

If you look up Bump(), it is only available to those from the /atom/movable branch, which makes sense as it is called when an object bumps into something, which requires the object to move.

When the object Bump()s into something, by default, the Bump() will call Bumped() on the other object. The "..()" will call the rest of the Bump() if defined elsewhere (if you do redefine Bump() later on, be sure to add the ..() to call the parent/default procedure)