Keith has provided 2 such procs, that i've added to oacs-5-10.
https://cvs.openacs.org/changelog/OpenACS?cs=oacs-5-10%3Agustafn%3A20210213173106
While promoting is straightforward, demoting has certain limitations in case this user has created several objects before (check to FK relations of users). Therefore, demoting is rather a low-level helper function and not intended as a replacement of "acs_user::change_state" which can be used to deactivate users in various ways.