diff --git a/bot.py b/bot.py
index a2c5afa..0e58e41 100644
--- a/bot.py
+++ b/bot.py
@@ -7,6 +7,7 @@
import re
import redis
import feedparser
+from json import loads
from configparser import ConfigParser
from telegram import ChatAction, ParseMode
@@ -34,6 +35,12 @@ logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s
level=logging.ERROR)
logger = logging.getLogger(__name__)
+# Admins
+admins = loads(config["ADMIN"]["id"])
+if not admins:
+ print('Keine Admin-IDs gesetzt, bitte Konfigurationsdatei bearbeiten.')
+ quit()
+
# Utils
if redis_socket:
r = redis.Redis(unix_socket_path=redis_socket, db=int(redis_db), decode_responses=True)
@@ -55,8 +62,7 @@ def remove_tags(html):
return ''.join(BeautifulSoup(html, "html.parser").findAll(text=True))
def can_use(update):
- unlocked = [36623702]
- if update.message.from_user.id in unlocked:
+ if update.message.from_user.id in admins:
return True
else:
return False
@@ -158,10 +164,16 @@ def subscribe_to_rss(bot, update, args):
feed_title = 'Unbekannten Feed'
else:
feed_title = feed_data.feed.title
- last_entry = feed_data.entries[0].id
- lhash = 'pythonbot:rss:' + feed_url + ':last_entry'
- if not r.exists(lhash):
- r.set(lhash, last_entry)
+
+ if len(feed_data.entries) > 0:
+ if not 'id' in feed_data.entries[0]:
+ last_entry = feed_data.entries[0].link
+ else:
+ last_entry = feed_data.entries[0].id
+ lhash = 'pythonbot:rss:' + feed_url + ':last_entry'
+ if not r.exists(lhash):
+ r.set(lhash, last_entry)
+
r.sadd('pythonbot:rss:' + feed_url + ':subs', int(chat_id))
r.sadd('pythonbot:rss:' + chat_id, feed_url)
bot.sendMessage(
@@ -225,6 +237,8 @@ def get_rss_list(chat_id, chat_name):
@run_async
def list_rss(bot, update, args):
+ if not can_use(update):
+ return
if len(args) == 1:
username = args[0]
chat_info = check_chat(bot, username)
@@ -245,13 +259,19 @@ def list_rss(bot, update, args):
parse_mode=ParseMode.HTML
)
-def get_new_entries(last, nentries):
+def get_new_entries(last, new_entries):
entries = []
- for k,v in enumerate(nentries):
- if v.id == last:
- return entries
+ for k,v in enumerate(new_entries):
+ if 'id' in v:
+ if v.id == last:
+ return entries
+ else:
+ entries.append(v)
else:
- entries.append(v)
+ if v.link == last:
+ return entries
+ else:
+ entries.append(v)
return entries
def manually_check_rss(bot, update):
@@ -314,7 +334,10 @@ def check_rss(bot, job):
text = text + '\n' + title + '\n' + feed_title + '\n' + content + '\nAuf ' + link_name + ' weiterlesen\n'
# ...und setze hier vor jeder Zeile 2 zusätzliche Leerzeichen
if text != '':
- newlast = newentr[0].id
+ if not 'id' in newentr[0]:
+ newlast = newentr[0].link
+ else:
+ newlast = newentr[0].id
r.set('pythonbot:rss:' + url + ':last_entry', newlast)
for k2, receiver in enumerate(list(r.smembers(v))):
try:
diff --git a/config.ini.example b/config.ini.example
index af7bace..245ce0f 100644
--- a/config.ini.example
+++ b/config.ini.example
@@ -5,4 +5,7 @@ token = 1337:1234567890abcdefgh
#db = 0
#host = localhost
#port = 6379
-#socket_path = /home/user/.redis/sock
\ No newline at end of file
+#socket_path = /home/user/.redis/sock
+
+[ADMIN]
+id = [1337]
\ No newline at end of file