parent
							
								
									f04f3ee436
								
							
						
					
					
						commit
						ed12619985
					
				@ -300,6 +300,66 @@ module Mastodon
 | 
				
			|||||||
      end
 | 
					      end
 | 
				
			||||||
    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
 | 
					    private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def rotate_keys_for_account(account, delay = 0)
 | 
					    def rotate_keys_for_account(account, delay = 0)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user