Except that that is impossible since the index is broken.
This does the trick:
# create a temporary table without constraints and copy the contents into it
create table users_test (like users);
insert into users_test select * from users;
# remove duplicate usernames case sensitive, the dupes are after Sept 22
delete from users_test where username in (
select username
from users_test
group by username
having count(username)>1
) and created_at>'2019-09-22' ;
# remove duplicate usernames case insensitive, the dupes are after Sept 22
delete from users_test where lower(username) in (
select lower(username)
from users_test
group by lower(username)
having count(lower(username))>1
) and created_at > '2019-09-22' ;
# two more problems left, delete them individually
delete from users_test where id in (184534,130826);
# create a new table with constraints and copy the users
create table users_clean (like users including indexes);
insert into users_clean select * from users_test;
and then rename users to users_old and users_clean to users.