Telegram bot posting LinkedIn + remote jobs (Egypt & worldwide)
# Telegram Job Bot
Posts new LinkedIn jobs (Egypt + remote worldwide) to a Telegram channel, DMs
you filtered alerts, and answers `/search` on demand.
~~~
Software Engineer ll - Flutter
🏢 talabat
📍 Dubai, Dubai, United Arab Emirates
🕒 6 minutes ago
📌 via LinkedIn
➡️ Apply Here
~~~
## Setup
1. **Create the bot** — message @BotFather, send `/newbot`, copy the token.
2. **Create a channel** — add your bot as an Administrator with **Post Messages**.
Public channel ID is `@yourchannel`; for a private one, forward a message to
@userinfobot to get the `-100...` id.
3. **Secrets** — Settings → Secrets and variables → Actions:
- `BOT_TOKEN` — the BotFather token
- `CHANNEL_ID` — `@yourchannel` or `-100...` (skip for DM-only)
4. **Permissions** — Settings → Actions → General → Workflow permissions →
**Read and write**. Without this the bot cannot save `state.json` and will
re-post the same jobs every run.
5. **Run it** — Actions → Job Bot → Run workflow. After that it runs itself
every 10 minutes, around the clock.
6. **Subscribe** — message your bot `/start`.
## Commands
| Command | What it does |
|---|---|
| `/start` | Subscribe to DM alerts |
| `/stop` | Unsubscribe |
| `/keywords python, flutter` | Only DM jobs matching these words |
| `/keywords clear` | Remove the keyword filter |
| `/locations egypt, remote` | Only DM jobs in these places |
| `/status` | Show your current filters |
| `/search flutter egypt` | Search right now |
On GitHub Actions, commands are answered on the next cron run (up to ~10 min).
In `serve` mode they are answered in about 3 seconds.
## Tuning
Everything lives in **`config.yaml`**, which is commented throughout.
- **Too few jobs?** Loosen or empty `filters.title_must_include`.
- **Too much noise?** Add words to `title_must_not_include`.
- **Different roles?** Edit the `searches` list.
- **Junior only?** Add `exp: [1, 2, 3]` to a search entry.
- **Rate-limited a lot?** You have too many searches. Cut the list to the 6-8
that matter. T …