# /// script # dependencies = [ # "atproto" # ] # /// from atproto import Client import getpass import time def follow_user_follows(client, target_user): "Follow everyone the target_user is following." cursor = None total_followed = 0 while True: # Step 1: Fetch a batch of accounts the target user is following # https://docs.bsky.app/docs/api/app-bsky-graph-get-follows response = client.app.bsky.graph.get_follows( {"actor": target_user, "limit": 100, "cursor": cursor} ) # Step 2: Iterate through the accounts for follow in response.follows: try: # Step 3: Follow each account client.follow(follow.did) print(f"Following {follow.handle}") total_followed += 1 # Step 4: Add a delay to respect rate limits time.sleep(2) except Exception as e: print(f"Error following {follow.handle}: {str(e)}") # Step 5: Check for more accounts to follow if not response.cursor: break cursor = response.cursor # Step 6: Print progress print(f"Followed {total_followed} users so far") # Step 7: Print final result print(f"Finished following {total_followed} users") if __name__ == "__main__": # Step 8: Set up credentials USERNAME = input("your_username.bsky.social ") APP_PASSWORD = getpass.getpass("your_app_password ") TARGET_USER = input("target_user.bsky.social ") # Step 9: Initialize and authenticate client client = Client() client.login(USERNAME, APP_PASSWORD) # Step 10: Execute the follow process follow_user_follows(client, TARGET_USER)