Hmm, ao olhar para isso, acho que deveria estar silenciando uma conta em vez de suspender. Se a conta for suspensa, o usuário não poderá fazer login para reivindicá-la.
Aqui está uma revisão…
Versão 0.0.2
silence_reason = 'Inativo'
User.where("views = 0 OR approved = FALSE OR last_seen_at IS NULL")
.where("id > 0") # evitar usuários do sistema
.find_each do |user|
user.silence(reason: silence_reason)
user.change_trust_level!(TrustLevel[0])
user.save!
logger.log_user_silence(user, silence_reason)
DiscourseEvent.trigger(:user_silenced, user: user)
sleep(5)
end
Sim, farei um backup antes de fazer qualquer uma dessas coisas.
Sim, sei que alguns TLs existentes serão reorganizados e terei que corrigi-los.
Além disso, em vez de silenciar, devo definir Approved=false ou Active=false? Acredito que isso forçará o usuário a clicar no link de e-mail em vez de fazer login manualmente, o que serve ao propósito de validar o endereço de e-mail.
Tudo isso está relacionado ao meu tópico recente: notes-on-silencing-or-deleting-users
[EDIT]
Também tenho “purge unactivated users grace period days” definido como 7.
Um silêncio ou suspensão reinicia isso? Se sim, se as pessoas não responderem a uma ação da conta em 7 dias, não tenho problemas em purgá-las.
Finalmente (sim, realmente) também tenho “clean up inactive users after days” definido como 365. Posso diminuir para 60 enquanto o fórum ainda está abrindo e apenas deixar as contas existentes saírem da lista. Em seguida, aumentá-lo de volta para 365. Essa é uma abordagem razoável para a poda automatizada de contas em um novo ambiente?