An advanced Telegram bot that tracks product prices on Trendyol and sends smart notifications when prices change. Designed for efficiency and reliability with enhanced user experience.
- 🔗 Universal Link Support: Works with both Trendyol.com and ty.gl (shortened) links
- ➕ Easy Product Addition: Use
/ekle
command or simply send a Trendyol link - ➖ Product Management: Remove products with
/sil
command - 📋 Smart Listing: View all tracked products with price trends using
/listele
- 🔄 Automated Price Monitoring: Configurable interval-based price checking
- 🎯 Smart Notifications:
- 📈 "Price Increased" notifications with red indicator
- 📉 "Price Decreased" notifications with green indicator
- Detailed price difference and percentage change
- 🔄 Manual Refresh: Use
/yenile
command to instantly check all product prices - 🏠 Multi-Group Support: Restrict bot access to specific Telegram groups
- ⚡ Optimized Performance: Lightweight code perfect for Raspberry Pi and low-power devices
- 🛡️ Enhanced Error Handling: Robust error management and logging
- 🎨 Rich Formatting: HTML-formatted messages with clickable links
- Python 3.6+ (Recommended: Python 3.8 or newer)
- pip (Python package manager)
- Telegram Bot Token (obtainable from @BotFather)
- Telegram Group ID(s) for access control
- Clone the repository:
git clone https://github.com/furkandlkdr/telegram-trendyol-bot.git
cd telegram-trendyol-bot
- Create and activate virtual environment:
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python3 -m venv venv
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
- Configure environment variables:
- Copy
.env.example
to.env
- Edit
.env
with your settings:
- Copy
# Telegram Bot Token from @BotFather
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
# Price check interval in minutes (default: 30)
CHECK_INTERVAL=30
# Comma-separated list of allowed Telegram group IDs
ALLOWED_GROUP_IDS=-1001234567890,-1009876543210
- Start the bot:
python main.py
To find your Telegram group ID:
- Add the bot to your group
- Send any message in the group
- Visit:
https://api.telegram.org/bot{YOUR_BOT_TOKEN}/getUpdates
- Look for
"chat":{"id": -1001234567890}
in the JSON response - Copy the negative number (including the minus sign)
Command | Description | Example |
---|---|---|
/start |
Initialize bot and show help | /start |
/ekle [URL] |
Add product to tracking | /ekle https://www.trendyol.com/... |
/sil [URL] |
Remove product from tracking | /sil https://www.trendyol.com/... |
/listele |
List all tracked products | /listele |
/yenile |
Manual refresh - Check all product prices instantly | /yenile |
Method 1: Command
/ekle https://www.trendyol.com/product-link
Method 2: Direct Link Simply paste any Trendyol link in the group:
https://www.trendyol.com/your-product-link
https://ty.gl/shortened-link
The /listele
command shows:
- 📈 Price increased from initial price
- 📉 Price decreased from initial price
- ➡️ No change in price
- Direct links to products
- Current vs initial price comparison
Use /yenile
command to instantly check all tracked product prices:
- 🔄 Instant Check: Immediately checks all products without waiting for scheduled interval
- 📊 Summary Report: Shows how many products were checked and how many prices changed
- 🔔 Immediate Notifications: Sends instant notifications for any price changes found
- ⚡ Safe Operation: Uses the same functions as automatic checking, no system conflicts
- Product Addition: Bot scrapes product name and current price
- Data Storage: Information saved in
tracked_products.json
- Scheduled Checks: Bot checks prices every X minutes (configurable)
- Manual Checks: Use
/yenile
command for instant price checking - Smart Notifications: Only sends alerts when prices actually change
- Price Updates: Database automatically updates with new prices
Create a systemd service for automatic startup:
sudo nano /etc/systemd/system/trendyol-bot.service
Service configuration (adjust paths for your setup):
[Unit]
Description=Trendyol Price Tracking Bot
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/telegram-trendyol-bot
ExecStart=/home/pi/telegram-trendyol-bot/venv/bin/python main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl enable trendyol-bot.service
sudo systemctl start trendyol-bot.service
Check status:
sudo systemctl status trendyol-bot.service
telegram-trendyol-bot/
├── main.py # 🤖 Main bot logic and Telegram handlers
├── scraper.py # 🕷️ Trendyol web scraping functionality
├── data_manager.py # 💾 JSON data management (CRUD operations)
├── config.py # ⚙️ Configuration and environment variables
├── requirements.txt # 📦 Python dependencies
├── .env.example # 📋 Environment variables template
├── .env # 🔐 Your actual environment variables (create this)
├── tracked_products.json # 🗃️ Product database (auto-generated with bot)
└── README.md # 📖 This documentation
File | Purpose | Key Functions |
---|---|---|
main.py |
Bot orchestration | Command handlers, price checking, notifications |
scraper.py |
Web scraping | Product info extraction, price parsing |
data_manager.py |
Data persistence | Add/remove products, price updates |
config.py |
Configuration | Environment variables, settings |
- python-telegram-bot 13.15: Telegram Bot API wrapper
- requests 2.31.0: HTTP requests for web scraping
- beautifulsoup4 4.12.2: HTML parsing
- lxml 4.9.3: Fast XML/HTML parser
- schedule 1.2.0: Job scheduling
- python-dotenv 1.0.0: Environment variable management
- Smart Price Detection: Multiple selector fallbacks for robust price extraction
- URL Validation: Supports both full and shortened Trendyol links
- Error Recovery: Comprehensive error handling with logging
- Memory Efficient: Minimal resource usage, ideal for 24/7 operation
- Thread Safety: Proper threading for scheduler and bot operations
Bot not responding:
- Check if
TELEGRAM_BOT_TOKEN
is correct - Verify group ID is in
ALLOWED_GROUP_IDS
- Ensure bot has proper permissions in the group
Price not detected:
- Trendyol may have changed their HTML structure
- Check logs for scraping errors
- Try with different products
Duplicate notifications:
- Fixed with improved scheduler management
- Restart the bot if still occurring
Memory issues on Raspberry Pi:
- Reduce
CHECK_INTERVAL
to check less frequently - Consider using swap if needed
Bot logs important events. Check console output for:
- Product addition/removal confirmations
- Price check results
- Error details
- Notification sending status
- Personal Use: This bot is designed for personal/small group use
- Rate Limiting: Trendyol may implement anti-bot measures
- Legal Compliance: Ensure compliance with Trendyol's terms of service
- Reliability: While robust, web scraping can break if sites change structure
- Privacy: All data is stored locally in JSON format
Contributions are welcome! Please feel free to submit pull requests or open issues for:
- Bug fixes
- New features
- Documentation improvements
- Performance optimizations
- Telegram Bot API Documentation
- BotFather - Create your bot token
- Trendyol - Supported e-commerce platform
Trendyol'daki ürün fiyatlarını takip eden ve fiyat değişikliklerinde akıllı bildirimler gönderen gelişmiş Telegram botu. Verimlilik ve güvenilirlik odaklı, geliştirilmiş kullanıcı deneyimi ile tasarlanmıştır.
- 🔗 Link Desteği: Hem Trendyol.com hem de ty.gl (kısaltılmış) linklerle çalışır
- ➕ Kolay Ürün Ekleme:
/ekle
komutu kullanın veya direkt Trendyol linki gönderin-paylaşın - ➖ Ürün Yönetimi:
/sil
komutu ile ürünleri kaldırın - 📋 Akıllı Listeleme:
/listele
ile fiyat trendleriyle birlikte tüm takip edilen ürünleri görün - 🔄 Otomatik Fiyat İzleme: Yapılandırılabilir aralıklarla fiyat kontrolü
- 🎯 Akıllı Bildirimler:
- 📈 Kırmızı gösterge ile "Fiyat Yükseldi" bildirimleri
- 📉 Yeşil gösterge ile "Fiyat Düştü" bildirimleri
- Detaylı fiyat farkı ve yüzde değişim bilgisi
- 🔄 Manuel Yenileme:
/yenile
komutu ile tüm ürün fiyatlarını anında kontrol edin - 🏠 Çoklu Grup Desteği: Bot erişimini belirli Telegram gruplarıyla sınırlayın
- ⚡ Optimize Edilmiş Performans: Raspberry Pi ve düşük güçlü cihazlar için mükemmel hafif kod
- 🛡️ Gelişmiş Hata Yönetimi: Sağlam hata yönetimi ve loglama
- 🎨 Zengin Formatlama: Tıklanabilir linklerle HTML formatlı mesajlar
- Python 3.6+ (Önerilen: Python 3.8 veya daha yeni)
- pip (Python paket yöneticisi)
- Telegram Bot Token (@BotFather üzerinden alınabilir)
- Telegram Grup ID(leri) erişim kontrolü için
- Repoyu klonlayın:
git clone https://github.com/furkandlkdr/telegram-trendyol-bot.git
cd telegram-trendyol-bot
- Sanal ortam oluşturun ve etkinleştirin:
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python3 -m venv venv
source venv/bin/activate
- Bağımlılıkları yükleyin:
pip install -r requirements.txt
- Çevre değişkenlerini yapılandırın:
.env.example
dosyasını.env
olarak kopyalayın.env
dosyasını ayarlarınızla düzenleyin:
# @BotFather'dan alınan Telegram Bot Token
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
# Dakika cinsinden fiyat kontrol aralığı (varsayılan: 30)
CHECK_INTERVAL=30
# İzin verilen Telegram grup ID'lerinin virgülle ayrılmış listesi
ALLOWED_GROUP_IDS=-1001234567890,-1009876543210
- Botu başlatın:
python main.py
Telegram grup ID'nizi bulmak için:
- Botu grubunuza ekleyin
- Grupta herhangi bir mesaj gönderin
- Şu adresi ziyaret edin:
https://api.telegram.org/bot{BOT_TOKEN_INIIZ}/getUpdates
- JSON yanıtında
"chat":{"id": -1001234567890}
bölümünü arayın - Negatif sayıyı (eksi işaretiyle birlikte) kopyalayın
Komut | Açıklama | Örnek |
---|---|---|
/start |
Botu başlat ve yardımı göster | /start |
/ekle [URL] |
Ürünü takibe ekle | /ekle https://www.trendyol.com/... |
/sil [URL] |
Ürünü takipten çıkar | /sil https://www.trendyol.com/... |
/listele |
Tüm takip edilen ürünleri listele | /listele |
/yenile |
Manuel yenileme - Tüm ürün fiyatlarını anında kontrol et | /yenile |
Yöntem 1: Komut
/ekle https://www.trendyol.com/urun-linki
Yöntem 2: Direkt Link Herhangi bir Trendyol linkini gruba yapıştırın:
https://www.trendyol.com/urun-linkiniz
https://ty.gl/kisaltilmis-link
/listele
komutu şunları gösterir:
- 📈 Başlangıç fiyatından artış
- 📉 Başlangıç fiyatından düşüş
- ➡️ Fiyatta değişiklik yok
- Ürünlere direkt linkler
- Güncel ve başlangıç fiyat karşılaştırması
/yenile
komutu ile tüm takip edilen ürün fiyatlarını anında kontrol edin:
- 🔄 Anında Kontrol: Zamanlanmış aralığı beklemeden tüm ürünleri hemen kontrol eder
- 📊 Özet Rapor: Kaç ürün kontrol edildiğini ve kaç tanesinde fiyat değiştiğini gösterir
- 🔔 Anında Bildirimler: Bulunan fiyat değişiklikleri için anında bildirim gönderir
- ⚡ Güvenli İşlem: Otomatik kontrolle aynı fonksiyonları kullanır, sistem çakışması yaşanmaz
- Ürün Ekleme: Bot ürün adını ve güncel fiyatı çeker
- Veri Saklama: Bilgiler
tracked_products.json
dosyasında saklanır - Zamanlanmış Kontroller: Bot her X dakikada bir fiyatları kontrol eder (yapılandırılabilir)
- Manuel Kontroller:
/yenile
komutu ile anında fiyat kontrolü yapın - Akıllı Bildirimler: Sadece fiyatlar gerçekten değiştiğinde uyarı gönderir
- Fiyat Güncellemeleri: Veritabanı otomatik olarak yeni fiyatlarla güncellenir
Otomatik başlatma için systemd servisi oluşturun:
sudo nano /etc/systemd/system/trendyol-bot.service
Servis yapılandırması (yolları kendi kurulumunuza göre ayarlayın):
[Unit]
Description=Trendyol Fiyat Takip Botu
After=network.target
[Service]
User=pi
WorkingDirectory=/home/pi/telegram-trendyol-bot
ExecStart=/home/pi/telegram-trendyol-bot/venv/bin/python main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Etkinleştirin ve başlatın:
sudo systemctl enable trendyol-bot.service
sudo systemctl start trendyol-bot.service
Durumu kontrol edin:
sudo systemctl status trendyol-bot.service
telegram-trendyol-bot/
├── main.py # 🤖 Ana bot mantığı ve Telegram işleyicileri
├── scraper.py # 🕷️ Trendyol web kazıma işlevselliği
├── data_manager.py # 💾 JSON veri yönetimi (CRUD işlemleri)
├── config.py # ⚙️ Yapılandırma ve çevre değişkenleri
├── requirements.txt # 📦 Python bağımlılıkları
├── .env.example # 📋 Çevre değişkenleri şablonu
├── .env # 🔐 Gerçek çevre değişkenleriniz (bunu oluşturun)
├── tracked_products.json # 🗃️ Ürün veritabanı (bot tarafından otomatik oluşturulur)
└── README.md # 📖 Bu dokümantasyon
Dosya | Amaç | Ana Fonksiyonlar |
---|---|---|
main.py |
Bot orkestras | Komut işleyicileri, fiyat kontrolü, bildirimler |
scraper.py |
Web kazıma | Ürün bilgisi çıkarma, fiyat ayrıştırma |
data_manager.py |
Veri kalıcılığı | Ürün ekleme/çıkarma, fiyat güncellemeleri |
config.py |
Yapılandırma | Çevre değişkenleri, ayarlar |
- python-telegram-bot 13.15: Telegram Bot API sarmalayıcısı
- requests 2.31.0: Web kazıma için HTTP istekleri
- beautifulsoup4 4.12.2: HTML ayrıştırma
- lxml 4.9.3: Hızlı XML/HTML ayrıştırıcısı
- schedule 1.2.0: İş zamanlama
- python-dotenv 1.0.0: Çevre değişkeni yönetimi
- Akıllı Fiyat Tespiti: Sağlam fiyat çıkarma için çoklu seçici yedekleri
- URL Doğrulama: Hem tam hem de kısaltılmış Trendyol linklerini destekler
- Hata Kurtarma: Loglama ile kapsamlı hata yönetimi
- Bellek Verimli: Minimal kaynak kullanımı, 7/24 işletim için ideal
- Thread Güvenliği: Zamanlayıcı ve bot işlemleri için uygun threading
Bot yanıt vermiyor:
TELEGRAM_BOT_TOKEN
'ın doğru olduğunu kontrol edin- Grup ID'sinin
ALLOWED_GROUP_IDS
'te olduğunu doğrulayın - Botun grupta uygun izinlere sahip olduğundan emin olun
Fiyat tespit edilmiyor:
- Trendyol HTML yapısını değiştirmiş olabilir
- Kazıma hatalarını kontrol etmek için logları inceleyin
- Farklı ürünlerle deneyin
Çift bildirim:
- Geliştirilmiş zamanlayıcı yönetimiyle düzeltildi
- Hala oluşuyorsa botu yeniden başlatın
Raspberry Pi'de bellek sorunları:
- Daha az sıklıkta kontrol için
CHECK_INTERVAL
'ı artırın - Gerekirse swap kullanmayı düşünün
Bot önemli olayları loglar. Konsol çıktısında şunları kontrol edin:
- Ürün ekleme/çıkarma onayları
- Fiyat kontrol sonuçları
- Hata detayları
- Bildirim gönderme durumu
- Kişisel Kullanım: Bu bot kişisel/küçük grup kullanımı için tasarlanmıştır
- Hız Sınırlaması: Trendyol anti-bot önlemleri uygulayabilir
- Yasal Uyumluluk: Trendyol'un kullanım şartlarına uygunluğu sağlayın
- Güvenilirlik: Sağlam olmasına rağmen, siteler yapı değiştirirse web kazıma bozulabilir
- Gizlilik: Tüm veriler yerel olarak JSON formatında saklanır
Bot artık hataları otomatik olarak admin'e bildirir:
- 🚨 Kritik Hatalar: Bot çöktüğünde anında bildirim
⚠️ Scraping Hataları: Çok sayıda scraping hatası durumunda uyarı- 📊 Watchdog Raporları: Bot durumu hakkında düzenli bilgiler
.env
dosyanıza admin chat ID'nizi ekleyin:
ADMIN_CHAT_ID=123456789
Chat ID'nizi bulmak için:
- Bot'unuza
/start
mesajı gönderin https://api.telegram.org/bot{BOT_TOKEN}/getUpdates
adresini ziyaret edin"from":{"id": 123456789}
değerini kopyalayın
Watchdog scripti botunuzu sürekli izler:
- ✅ Process İzleme: Bot çalışıp çalışmadığını kontrol eder
- 🔄 Otomatik Restart: Bot durduğunda otomatik yeniden başlatır
- 📱 Telegram Bildirimleri: Tüm olaylar için bildirim gönderir
- 📝 Detaylı Loglama: Tüm aktiviteler loglanır
# Projeyi klonlayın
git clone https://github.com/furkandlkdr/telegram-trendyol-bot.git
cd telegram-trendyol-bot
# Kurulum scriptini çalıştırın
chmod +x install_raspberry.sh
./install_raspberry.sh
1. Sistem hazırlığı:
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv git curl
2. Proje kurulumu:
git clone https://github.com/furkandlkdr/telegram-trendyol-bot.git
cd telegram-trendyol-bot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3. Çevre değişkenleri:
cp .env.example .env
nano .env # Ayarlarınızı girin
4. Systemd servisleri:
sudo cp systemd/trendyol-bot.service /etc/systemd/system/
sudo cp systemd/trendyol-watchdog.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable trendyol-bot.service
sudo systemctl enable trendyol-watchdog.service
5. Servisleri başlatın:
sudo systemctl start trendyol-bot.service
sudo systemctl start trendyol-watchdog.service
Servis durumu:
sudo systemctl status trendyol-bot.service
sudo systemctl status trendyol-watchdog.service
Canlı loglar:
sudo journalctl -u trendyol-bot.service -f
sudo journalctl -u trendyol-watchdog.service -f
Servis yönetimi:
sudo systemctl restart trendyol-bot.service
sudo systemctl stop trendyol-bot.service
sudo systemctl start trendyol-bot.service
Sistem kaynaklarını izleme:
htop # CPU ve RAM kullanımı
df -h # Disk kullanımı
free -h # Bellek durumu
journalctl --disk-usage # Log disk kullanımı
Bellek optimizasyonu:
# Swap dosyası oluştur (isteğe bağlı)
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# /etc/fstab'a ekle
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Log döngüsü:
# Log boyutunu sınırla
sudo nano /etc/systemd/journald.conf
# Şu satırları uncomment edin:
# SystemMaxUse=50M
# MaxRetentionSec=1week
sudo systemctl restart systemd-journald
Bot başlamıyor:
# Detaylı log kontrol
sudo journalctl -u trendyol-bot.service --no-pager
# Manuel test
cd /home/pi/telegram-trendyol-bot
source venv/bin/activate
python main.py
Watchdog çalışmıyor:
# Process kontrolü
ps aux | grep python
ps aux | grep watchdog
# Manuel watchdog testi
cd /home/pi/telegram-trendyol-bot
source venv/bin/activate
python watchdog.py
Bellek sorunu:
# Bellek kullanımını kontrol et
free -h
sudo systemctl status
# Gereksiz servisleri durdur
sudo systemctl disable bluetooth.service
sudo systemctl disable hciuart.service
Katkılar memnuniyetle karşılanır! Lütfen şunlar için pull request gönderin veya issue açın:
- Hata düzeltmeleri
- Yeni özellikler
- Dokümantasyon iyileştirmeleri
- Performans optimizasyonları
Bu proje açık kaynaklıdır ve MIT Lisansı altında mevcuttur.
- Telegram Bot API Dokümantasyonu
- BotFather - Bot token'ınızı oluşturun
- Trendyol - Desteklenen e-ticaret platformu