diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 9f7870bcd..610606891 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -300,6 +300,36 @@ module Mastodon end end + desc 'follow ACCT', 'Make all local accounts follow account specified by ACCT' + long_desc <<-LONG_DESC + Make all local accounts follow an account specified by ACCT. ACCT can be + a simple username, in case of a local user. It can also be in the format + username@domain, in case of a remote user. + LONG_DESC + def follow(acct) + target_account = ResolveAccountService.new.call(acct) + processed = 0 + failed = 0 + + if target_account.nil? + say("Target account (#{acct}) could not be resolved", :red) + exit(1) + end + + Account.local.without_suspended.find_each do |account| + begin + FollowService.new.call(account, target_account) + processed += 1 + say('.', :green, false) + rescue + failed += 1 + say('.', :red, false) + end + end + + say("OK, created follow relations for #{processed} accounts, skipped #{failed}", :green) + end + private def rotate_keys_for_account(account, delay = 0)