Skip to content

Commit

Permalink
Add tootctl accounts follow ACCT (mastodon#9414)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gargron authored and hiyuki2578 committed Oct 2, 2019
1 parent bd6cc39 commit 209de94
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions lib/mastodon/accounts_cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,66 @@ def refresh(username = nil)
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 StandardError
failed += 1
say('.', :red, false)
end
end

say("OK, followed target from #{processed} accounts, skipped #{failed}", :green)
end

desc 'unfollow ACCT', 'Make all local accounts unfollow account specified by ACCT'
long_desc <<-LONG_DESC
Make all local accounts unfollow 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 unfollow(acct)
target_account = Account.find_remote(*acct.split('@'))
processed = 0
failed = 0

if target_account.nil?
say("Target account (#{acct}) was not found", :red)
exit(1)
end

target_account.followers.local.find_each do |account|
begin
UnfollowService.new.call(account, target_account)
processed += 1
say('.', :green, false)
rescue StandardError
failed += 1
say('.', :red, false)
end
end

say("OK, unfollowed target from #{processed} accounts, skipped #{failed}", :green)
end

private

def rotate_keys_for_account(account, delay = 0)
Expand Down

0 comments on commit 209de94

Please sign in to comment.