Dunevhhhh commited on
Commit
d772b14
·
verified ·
1 Parent(s): f256f51

Create telegram_bot.py

Browse files
Files changed (1) hide show
  1. telegram_bot.py +54 -0
telegram_bot.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # telegram_bot.py (erweitert)
2
+ from config import SETTINGS
3
+ import logging
4
+
5
+ logger = logging.getLogger(__name__)
6
+
7
+ class TelegramBot:
8
+ def __init__(self):
9
+ self.chat_id = SETTINGS["6695197012"]
10
+ self.token = SETTINGS["7562186384:AAEvykmSQHkdkFMQhq8FJss>"]
11
+ self.message_queue = asyncio.Queue()
12
+ self.semaphore = asyncio.Semaphore(5) # Parallele Anfragen
13
+
14
+ async def format_message(self, article):
15
+ emoji_map = {
16
+ "technology": "📱",
17
+ "politics": "🏛️",
18
+ "sports": "⚽",
19
+ "general": "📰"
20
+ }
21
+ emoji = emoji_map.get(article["category"], "📌")
22
+ return (
23
+ f"{emoji} *{article['title']}*\n"
24
+ f"🗓️ {article['published'].strftime('%d.%m.%Y %H:%M')}\n"
25
+ f"📰 Quelle: {article['source']}\n\n"
26
+ f"{article['description']}\n\n"
27
+ f"[➡️ Vollständiger Artikel]({article['link']})"
28
+ )
29
+
30
+ async def send_message(self, text):
31
+ async with aiohttp.ClientSession() as session:
32
+ url = f"https://api.telegram.org/bot{self.token}/sendMessage"
33
+ payload = {
34
+ "chat_id": self.chat_id,
35
+ "text": text,
36
+ "parse_mode": "Markdown",
37
+ "disable_web_page_preview": False
38
+ }
39
+ async with self.semaphore:
40
+ try:
41
+ async with session.post(url, json=payload) as response:
42
+ if response.status != 200:
43
+ logger.error(f"Telegram API Fehler: {await response.text()}")
44
+ except Exception as e:
45
+ logger.error(f"Nachricht konnte nicht gesendet werden: {str(e)}")
46
+
47
+ async def process_queue(self):
48
+ while True:
49
+ article = await self.message_queue.get()
50
+ try:
51
+ message = await self.format_message(article)
52
+ await self.send_message(message)
53
+ finally:
54
+ self.message_queue.task_done()