Merhaba;
Belli kategoride yer alan haberleri telegramda yayınlamak istiyorum. Ücretsiz haber botu mevcut mu?
Ayrıca bu tarz haberlerde abonelik şart mı? Yani yasal mı?
Telegram Haber Botu var mı? (Ücretsiz)
5
●160
- 26-09-2025, 11:25:25Buyrun daha önce hazırlamıştım. İstediğiniz yapay zeka ile geliştirebilirsiniz.
from abc import ABC, abstractmethod import feedparser from datetime import datetime import logging from typing import Dict, List, Optional import json import os class NewsSource(ABC): @abstractmethod def get_news(self, category: str) -> List[dict]: pass @abstractmethod def get_categories(self) -> List[str]: pass class BBCNews(NewsSource): def __init__(self): self.rss_feeds = { "world": "http://feeds.bbci.co.uk/news/world/rss.xml", "technology": "http://feeds.bbci.co.uk/news/technology/rss.xml", "business": "http://feeds.bbci.co.uk/news/business/rss.xml", "health": "http://feeds.bbci.co.uk/news/health/rss.xml", "science": "http://feeds.bbci.co.uk/news/science_and_environment/rss.xml", "sport": "http://feeds.bbci.co.uk/sport/rss.xml", "entertainment": "http://feeds.bbci.co.uk/news/entertainment_and_arts/rss.xml", } def get_categories(self) -> List[str]: return list(self.rss_feeds.keys()) def get_news(self, category: str = "world") -> List[dict]: if category not in self.rss_feeds: raise ValueError(f"Geçersiz kategori. Mevcut kategoriler: {', '.join(self.get_categories())}") feed = feedparser.parse(self.rss_feeds[category]) return [ { 'title': entry.title, 'summary': entry.summary, 'link': entry.link, 'published': datetime.strptime(entry.published, "%a, %d %b %Y %H:%M:%S %Z"), } for entry in feed.entries[:10] ] class NewsFormatter: @staticmethod def format_news(news: dict) -> str: formatted_date = news['published'].strftime("%Y-%m-%d %H:%M:%S") return ( f"🕒 {formatted_date}\n" f"🔹 {news['title']}\n" f" {news['summary']}\n" f" 🌍 Kaynak: {news['link']}\n" f"{'-' * 50}" ) class NewsManager: def __init__(self, news_source: NewsSource): self.news_source = news_source self.formatter = NewsFormatter() self.logger = self._setup_logger() def _setup_logger(self) -> logging.Logger: logger = logging.getLogger('HaberBot') logger.setLevel(logging.INFO) if not logger.handlers: handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) return logger def display_news(self, category: str = "world"): try: self.logger.info(f"{category.upper()} kategorisi için haberler getiriliyor...") print(f"\n📢 BBC News - {category.upper()} Kategorisi 📢\n" + "=" * 50) news_list = self.news_source.get_news(category) for news in news_list: print(self.formatter.format_news(news)) except Exception as e: self.logger.error(f"Haber alınırken hata oluştu: {str(e)}") print(f"❌ Hata: {str(e)}") class NewsBot: def __init__(self): self.news_manager = NewsManager(BBCNews()) self.settings = self._load_settings() def _load_settings(self) -> dict: if os.path.exists('settings.json'): with open('settings.json', 'r', encoding='utf-8') as f: return json.load(f) return {'default_category': 'world'} def run(self): print("🤖 HaberBot'a Hoş Geldiniz! 🤖") print("\nMevcut kategoriler:") categories = self.news_manager.news_source.get_categories() print(", ".join(categories)) while True: category = input("\nHangi kategori? (çıkış için 'q'): ").strip().lower() if category == 'q': print("\n👋 HaberBot'u kullandığınız için teşekkürler!") break if category in categories: self.news_manager.display_news(category) else: print("❌ Geçersiz kategori! Lütfen listeden bir kategori seçin.") def main(): bot = NewsBot() bot.run() if __name__ == "__main__": main() - 26-09-2025, 11:36:19Galiba replit böyle bir hizmet veriyorduFoxi adlı üyeden alıntı: mesajı görüntüle