1
0
Fork 0

Add support of Tomuss

This commit is contained in:
Ethanell 2019-12-21 11:47:56 +01:00
parent 4cc233fcd2
commit 4587df372a
3 changed files with 50 additions and 3 deletions

View file

@ -1,6 +1,7 @@
import datetime
import requests
from EDTcalendar import Calendar
from feedparser import parse
KFET_URL = "http://kfet.bdeinfo.org/orders"
@ -20,6 +21,8 @@ class User:
self.nt_last = get_now()
self.kfet = None
self.await_cmd = str()
self.tomuss_rss = str()
self.tomuss_last = str()
def calendar(self, time: str = "", pass_week: bool = False):
return Calendar(time, self.resources, pass_week=pass_week)
@ -45,3 +48,11 @@ class User:
res = 3
self.kfet = None if res else self.kfet
return res
def get_tomuss(self):
entry = list()
if self.tomuss_rss:
entry = [e for e in parse(self.tomuss_rss).entries]
if not self.tomuss_last:
return entry
return entry[self.tomuss_last:]

View file

@ -19,5 +19,8 @@
"err_num": "Invalid number ! \u274C",
"notif_time_cooldown": "Notification `{}` set to `{}` ! \u2705",
"notif_info": "_Notification_\n*State:* {}\n*Time:* {}\n*Cooldown:* {}",
"notif_await": "Please send the new value !"
"notif_await": "Please send the new value !",
"settomuss": "Tomuss set \u2705",
"settomuss_error": "Invalid RSS feed ! \u274C",
"settomuss_wait": "Send the RSS feed link of your Tomuss !"
}

37
bot.py
View file

@ -22,6 +22,7 @@ from ics.parse import ParseError
from requests.exceptions import ConnectionError, InvalidSchema, MissingSchema
from pyzbar.pyzbar import decode
from PIL import Image
from feedparser import parse
if not isdir("logs"):
@ -82,16 +83,18 @@ async def notif():
with shelve.open("edt", writeback=True) as db:
for u in db:
nt = None
kg = None
kf = None
tm = None
try:
nt = db[u].get_notif()
kf = db[u].get_kfet()
tm = db[u].get_tomuss()
except:
pass
if nt:
await bot.send_message(int(u), lang(db[u], "notif_event")+str(nt), parse_mode=ParseMode.MARKDOWN)
if kf is not None:
if kf:
if kf == 1:
kf = lang(db[u], "kfet")
elif kf == 2:
@ -99,6 +102,17 @@ async def notif():
else:
kf = lang(db[u], "kfet_err")
await bot.send_message(int(u), kf, parse_mode=ParseMode.MARKDOWN)
if tm:
for i in tm:
msg = markdown.text(
markdown.bold(i.title),
markdown.code(i.summary.replace("<br>", "\n").replace("<b>", "").replace("</b>", "")),
sep="\n"
)
await bot.send_message(int(u), msg, parse_mode=ParseMode.MARKDOWN)
db[u].tomuss_last = i
await sleep(60)
@ -137,6 +151,7 @@ async def start(message: types.Message):
key.add(reply_keyboard.KeyboardButton("Setkfet"))
key.add(reply_keyboard.KeyboardButton("Setedt"))
key.add(reply_keyboard.KeyboardButton("Notif"))
key.add(reply_keyboard.KeyboardButton("Settomuss"))
await message.reply(lang(user, "welcome"), parse_mode=ParseMode.MARKDOWN, reply_markup=key)
@ -209,6 +224,17 @@ async def edt_await(message: types.Message):
await message.reply(lang(db[user_id], "setedt_wait"), parse_mode=ParseMode.MARKDOWN)
@dp.message_handler(lambda msg: msg.text.lower() == "settomuss")
async def edt_await(message: types.Message):
user_id = str(message.from_user.id)
await message.chat.do(types.ChatActions.TYPING)
logger.info(f"{message.from_user.username} do settomuss")
with dbL:
with shelve.open("edt", writeback=True) as db:
db[user_id].await_cmd = "settomuss"
await message.reply(lang(db[user_id], "settomuss_wait"), parse_mode=ParseMode.MARKDOWN)
@dp.message_handler(commands="getedt")
async def edt_geturl(message: types.Message):
user_id = str(message.from_user.id)
@ -303,6 +329,13 @@ async def await_cmd(message: types.message):
db[user_id].kfet = int(message.text)
msg = lang(db[user_id], "kfet_set")
elif db[user_id].await_cmd == "settomuss":
if not len(parse(message.text).entries):
msg = lang(db[user_id], "settomuss_error")
else:
db[user_id].tomuss_rss = message.text
msg = lang(db[user_id], "settomuss")
elif db[user_id].await_cmd in ["time", "cooldown"]:
try:
value = int(message.text)