194 lines
3.1 KiB
Markdown
194 lines
3.1 KiB
Markdown
# 🤖 telegram-bot
|
||
|
||
A lightweight AI-powered Telegram bot that responds like a real texting friend.
|
||
|
||
It uses OpenAI to generate short, casual responses while mirroring the user’s exact texting style, including capitalization, punctuation, shorthand, and energy.
|
||
|
||
---
|
||
|
||
## ✨ Features
|
||
|
||
* 🧠 Powered by OpenAI (`gpt-4o`)
|
||
* 💬 Mirrors user texting style automatically
|
||
* ⏱ Simulated “read” delay
|
||
* ⌨️ Realistic typing indicator timing
|
||
* 🧾 Conversation memory (last 20 messages per chat)
|
||
* 🎭 Customizable personality via `personality.txt`
|
||
* 📄 Automatic `.env` setup on first run
|
||
* 📝 Logging to `telegram-bot.log`
|
||
|
||
---
|
||
|
||
## 📦 Requirements
|
||
|
||
* Python 3.9+
|
||
* OpenAI API Key
|
||
* Telegram Bot Token
|
||
|
||
---
|
||
|
||
## 🔧 Installation
|
||
|
||
### 1️⃣ Clone the repo
|
||
|
||
```bash
|
||
git clone https://github.com/JustinOros/telegram-bot.git
|
||
cd telegram-bot
|
||
```
|
||
|
||
### 2️⃣ Install dependencies
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3️⃣ Run the bot
|
||
|
||
```bash
|
||
python3 telegram-bot.py
|
||
```
|
||
|
||
On first run, it will prompt you for:
|
||
|
||
* OpenAI API Key
|
||
* Telegram Bot Token
|
||
|
||
It will then create a `.env` file automatically.
|
||
|
||
---
|
||
|
||
## 🔐 Environment Variables
|
||
|
||
The bot uses a `.env` file:
|
||
|
||
```
|
||
OPENAI_API_KEY=your_openai_key
|
||
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
|
||
```
|
||
|
||
⚠️ Important:
|
||
Make sure `.env` is included in `.gitignore` so you never upload your API keys.
|
||
|
||
---
|
||
|
||
## 🎭 Personality Customization
|
||
|
||
The bot loads its personality from:
|
||
|
||
```
|
||
personality.txt
|
||
```
|
||
|
||
If it doesn’t exist, a default one is created automatically.
|
||
|
||
You can edit this file to change the bot’s tone, for example:
|
||
|
||
* More sarcastic
|
||
* More professional
|
||
* More flirty
|
||
* Super minimal replies
|
||
* Long-form explanations
|
||
|
||
---
|
||
|
||
## 🧠 Style Mirroring System
|
||
|
||
The bot automatically:
|
||
|
||
* Matches capitalization
|
||
* Matches punctuation usage
|
||
* Matches grammar looseness
|
||
* Uses the same shorthand (u, rn, idk, lmk, etc.)
|
||
* Matches message length & energy
|
||
|
||
It does this dynamically per message.
|
||
|
||
---
|
||
|
||
## 📁 Project Structure
|
||
|
||
```
|
||
telegram-bot.py
|
||
personality.txt
|
||
.env
|
||
telegram-bot.log
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Configuration Constants
|
||
|
||
Inside `telegram-bot.py`:
|
||
|
||
* `MAX_HISTORY = 20` → Conversation memory length
|
||
* `WORDS_PER_MINUTE = 30` → Typing simulation speed
|
||
* `READ_DELAY_MIN/MAX` → Simulated reading delay
|
||
* `TYPING_ACTION_INTERVAL` → Telegram typing refresh rate
|
||
|
||
---
|
||
|
||
## 🛑 Stopping the Bot
|
||
|
||
Press:
|
||
|
||
```
|
||
Ctrl + C
|
||
```
|
||
|
||
---
|
||
|
||
## 💻 Prevent macOS from Sleeping
|
||
|
||
If you're running the bot on macOS and want to prevent your computer from going to sleep, use:
|
||
|
||
```bash
|
||
caffeinate -i python3 telegram-bot.py
|
||
```
|
||
|
||
This keeps the system awake while the bot is running.
|
||
|
||
---
|
||
|
||
## 🧾 Logs
|
||
|
||
All logs are written to:
|
||
|
||
```
|
||
telegram-bot.log
|
||
```
|
||
|
||
Console output is also enabled.
|
||
|
||
---
|
||
|
||
## 🚨 Troubleshooting
|
||
|
||
### Missing dependencies
|
||
|
||
Run:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### Network errors
|
||
|
||
* Check internet connection
|
||
* Ensure Telegram is not blocked
|
||
* Verify your bot token is correct
|
||
|
||
---
|
||
|
||
## 🛡 Security Notes
|
||
|
||
* Never commit your `.env` file
|
||
* If keys are exposed, immediately rotate them
|
||
* Use a private repo if testing
|
||
|
||
---
|
||
|
||
Built for fun, realism, and that “this might actually be a human” vibe 😎
|
||
|
||
---
|
||
|