A simple command-line tool written in Python to post statuses to Bluesky and view your timeline.
- Post a status: Quickly post a new status with an emoji to your Bluesky account.
- View your timeline: Fetch and display the 10 most recent posts from your timeline.
- Interactive mode: Run the script without arguments for an interactive menu.
- CLI mode: Use command-line arguments for quick, non-interactive use.
- Dependency check: The script automatically checks for required libraries and provides installation instructions.
- Rate limiting: Prevents posting more than once every hour.
- Python 3.x
- A Bluesky account
- An App Password for your Bluesky account. You can generate one in your Bluesky settings.
-
Clone or download the project files.
-
(Optional but recommended) Create and activate a Python virtual environment:
python3 -m venv venv # On macOS and Linux: source venv/bin/activate # On Windows: .\venv\Scripts\activate -
Install the required Python libraries using pip:
pip install rich python-dotenv emoji atproto -
Create a .env file in the same directory as main.py with your Bluesky credentials:
BSKY_USERNAME=your_username.bsky.social BSKY_APP_PASSWORD=your_app_passwordReplace your_username.bsky.social and your_app_password with your actual Bluesky username and app password.
Simply run the script without any arguments to enter the interactive menu:
python main.py
You can use the following commands directly from your terminal:
- Post a new status:
python main.py post :wave: "Hello from my new CLI tool\!"
The script uses emoji shortcodes, which are converted to actual emojis before posting.
- View your timeline:
python main.py timeline
To avoid spamming, the script has a built-in rate limit. You can only post a new status once every hour. If you try to post more frequently, the script will inform you of the remaining time before you can post again.
This project is licensed under the MIT License. See the LICENSE file for details.