π TelePostKeeper Bot (with GitHub Actions Runner)
This repository hosts a GitHub Actions workflow to automate tasks for TelePostKeeper (TPK), a tool for managing and posting content to Telegram channels efficiently. The bot is designed to run directly within GitHub Actions, leveraging the platformβs robust environment for scheduling, event-based triggers, and task automation.
π Features
- Automated Scheduling: Runs every 10 minutes by default or on specific triggers like branch pushes or release publications.
- Content Management: Downloads, processes, and posts content to specified Telegram channels.
- Encrypted Environment: Secure handling of sensitive data like API tokens and channel configurations.
- Customizable Workflow: Supports flexible configurations for storage, timeout limits, and more.
- Frontend Support: Includes a frontend command to preview or manage tasks interactively.
- Auto-Commit Integration: Automatically commits generated updates (like logs or processed outputs) back to the repository.
π οΈ Setup Instructions
- Create a new repository in your GitHub.
2. Define Secrets and Variables
Required Secrets
Go to your repositoryβs Settings > Secrets and Variables > Actions, and add the following:
- TPK_BOT_TOKEN: The Telegram Bot API token.
- TPK_CHANNELS_IDS_LIST: List of target Telegram channel IDs (1111,2222,333,444).
Optional Variables
Add the following in Settings > Secrets and Variables > Actions (Variables):
-
TPK_STORE_DIR: Directory for storing processed data (e.g., data/).
-
TPK_ENCRYPT_AES_KEY_BASE64: A Base64-encoded AES encryption key for secure data handling.
-
TPK_ENCRYPT_AES_IV_BASE64: Initialization Vector for AES encryption (Base64-encoded).
-
TPK_CHANNELS_IDS_LIST_ENCRYPTED: AES-encrypted list of channel IDs (if using encryption).
Generate keys on any wabsite like this
- key 256 bits (32 bytes) long
- iv 128 bits (16 bytes) long
https://generate.plus/en/base64
To test decryption try there (all inputs in base64)
https://emn178.github.io/online-tools/aes/decrypt/
- TPK_SKIP_DOWNLOAD_TEXT
- TPK_SKIP_DOWNLOAD_PHOTO
- TPK_SKIP_DOWNLOAD_DOCUMENT
- TPK_SKIP_DOWNLOAD_AUDIO
- TPK_SKIP_DOWNLOAD_VIDEO
- TPK_SKIP_DOWNLOAD_VOICE
- TPK_SKIP_DOWNLOAD_LOCATION
- TPK_SKIP_DOWNLOAD_STICKER
- TPK_SKIP_DOWNLOAD_THUMBNAIL
3. Configure the Workflow
The bot uses a pre-configured GitHub Actions workflow. The file is located at .github/workflows/tpk-runner.yml. It includes the following triggers:
- Schedule: Runs every 10 minutes by default.
- Push: Executes on pushes to the main branch.
- Release: Triggers when a new release is published.
4. Start the Workflow
Commit the changes to your repository and push them to GitHub. The workflow will start running automatically based on the defined triggers.
π GitHub Actions Workflow
Below is the full workflow used to run the bot:
name: π tpk-runner
run-name: π tpk-runner (${{ github.actor }}) π
on:
schedule:
- cron: '*/10 * * * *'
push:
branches:
- main
release:
types: [published]
permissions:
contents: write
jobs:
tpk-runner:
runs-on: ubuntu-latest
env:
TPK_BOT_TOKEN: ${{ secrets.TPK_BOT_TOKEN }}
TPK_ENCRYPT_AES_KEY_BASE64: ${{ secrets.TPK_ENCRYPT_AES_KEY_BASE64 }}
TPK_CHANNELS_IDS_LIST: ${{ vars.TPK_CHANNELS_IDS_LIST }}
TPK_CHANNELS_IDS_LIST_ENCRYPTED: ${{ vars.TPK_CHANNELS_IDS_LIST_ENCRYPTED }}
TPK_ENCRYPT_AES_IV_BASE64: ${{ vars.TPK_ENCRYPT_AES_IV_BASE64 }}
TPK_SKIP_DOWNLOAD_BIGGER: ${{ vars.TPK_SKIP_DOWNLOAD_BIGGER }}
TPK_STORE_DIR: ${{ vars.TPK_STORE_DIR }}
steps:
- name: π Checkout repository
uses: actions/checkout@v4
- name: π Set up Python environment
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: π Install TPK
run: pip install telepostkeeper
- name: π Install process-time-killer
run: pip install process-time-killer
- name: π‘ Listening
run: timekiller "telepostkeeper" --timeout 30
- name: πΌ Frontend
run: telepostkeeper-frontend
- name: Get current date-time
run: echo "COMMIT_MESSAGE=$(date '+%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV
- name: πΎ Git Auto Commit
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: ${{ env.COMMIT_MESSAGE }}
π§° Tools Used
- GitHub Actions: Automates tasks and triggers events.
- TelePostKeeper: The core tool for managing Telegram channel content.
- Process-Time-Killer: Monitors and manages process execution time.
- Python: The runtime environment for the bot.
π Notes
- Timeout Management: Customize the timeout value for timekiller as needed.
- Storage: Files are stored in the specified directory (TPK_STORE_DIR). Ensure enough storage is available.
π‘οΈ Security
- Use GitHub Secrets to store sensitive credentials like TPK_BOT_TOKEN and encryption keys.
- Avoid hardcoding secrets in your workflow files or scripts.
π License
This project is licensed under the MIT License.
Todo
- Number of posts at every parent item