bot.py
from config import BOT_TOKEN, CHANNEL_ID, RSS_URL
from telegram import Bot
import asyncio
from fetcher import fetch_news
from filter import is_relevant
bot = Bot(token=BOT_TOKEN)
async def main():
articles = fetch_news()
for article in articles:
if is_relevant(article):
message = f"📰 <b>{article['title']}</b>\n{article['link']}"
await bot.send_message(chat_id=CHANNEL_ID, text=message, parse_mode='HTML')
if __name__ == "__main__":
asyncio.run(main())
config.py
from dotenv import load_dotenv
import os
load_dotenv()
BOT_TOKEN = os.getenv("BOT_TOKEN")
RSS_URL = os.getenv('RSS_URL')
CHANNEL_ID = os.getenv("CHANNEL_ID")
KEYWORDS = ["action", "боевик", "gunfight", "explosion", "chase", "military", "shootout"]
print("BOT_TOKEN:", BOT_TOKEN)
fetcher.py
import feedparser
from config import RSS_URL
def fetch_news():
feed = feedparser.parse(RSS_URL)
articles = []
for entry in feed.entries:
articles.append({
'title': entry.title,
'link': entry.link,
'summary': entry.summary if 'summary' in entry else ''
})
return articles
fetcher.py
from config import KEYWORDS
def is_relevant(article):
text = (article['title'] + " " + article['summary']).lower()
return any(keyword.lower() in text for keyword in KEYWORDS)
requirements.txt
python-telegram-bot==20.7 feedparser==6.0.11 python-dotenv==1.0.1