Browse Source

added mensa command

master
angerstoner 7 years ago
parent
commit
6649fde6b9
  1. 71
      schneiderbot.py

71
schneiderbot.py

@ -1,25 +1,23 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Simple Bot to reply to Telegram messages.
This program is dedicated to the public domain under the CC0 license.
This Bot uses the Updater class to handle the bot.
First, a few handler functions are defined. Then, those functions are passed to
the Dispatcher and registered at their respective places.
Then, the bot is started and runs until we press Ctrl-C on the command line.
Usage:
Basic Echobot example, repeats messages.
Press Ctrl-C on the command line or send a signal to the process to stop the
bot.
"""
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
from telegram import ParseMode
import logging import logging
import random import random
import requests
import datetime
MENSA_URL = {
"zentral": "zentralmensa",
"nord": "nordmensa",
"turm": "turmmensa"
}
MENSA_NAME = {
"zentral": "Zentralmensa",
"nord": "Nordmensa",
"turm": "Turmmensa"
}
# Enable logging # Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
@ -56,6 +54,46 @@ def manta(bot, update):
rand = random.SystemRandom() rand = random.SystemRandom()
update.message.reply_text(MANTA[rand.randrange(0, len(MANTA), 1)]) update.message.reply_text(MANTA[rand.randrange(0, len(MANTA), 1)])
def mensa(bot, update, args):
which = "zentral"
if len(args):
which = args[0]
if which not in MENSA_NAME:
update.message.reply_text("Diese Mensa gibt es nicht! RTFM und versuchs nochmal.")
return
today = datetime.datetime.now().date().weekday() + 1
today = 2
if datetime.datetime.now().time() > datetime.time(hour=16):
# Es ist zu spät am Tag, zeig das essen für morgen an
today += 1
today = today % 7
url = "https://mensa.schneider-hosting.de/static/%s.%d.json" % (MENSA_URL[which], today)
request = requests.get(url)
request.encoding = 'utf-8'
data = request.json()
message = "Das Essen für %s in der %s \n" % (data["date"], MENSA_NAME[which])
if len(data["meals"]) > 0:
for meal in data["meals"]:
meal_line = "*%s*\n" % meal["category"]
meal_line += meal["title"].strip() + "\n"
# Discord only allows up to 2000 chars per message
if len(message) + len(meal_line) > 2000:
update.message.reply_text(message, parse_mode=ParseMode.MARKDOWN)
message = meal_line + "\n"
else:
message += meal_line + "\n"
update.message.reply_text(message, parse_mode=ParseMode.MARKDOWN)
else:
update.message.reply_text("Nix zu futtern heute :(")
def echo(bot, update): def echo(bot, update):
"""Echo the user message.""" """Echo the user message."""
update.message.reply_text(update.message.text) update.message.reply_text(update.message.text)
@ -80,6 +118,7 @@ def main():
dp.add_handler(CommandHandler("help", help)) dp.add_handler(CommandHandler("help", help))
dp.add_handler(CommandHandler("magie", magie)) dp.add_handler(CommandHandler("magie", magie))
dp.add_handler(CommandHandler("manta", manta)) dp.add_handler(CommandHandler("manta", manta))
dp.add_handler(CommandHandler("mensa", mensa, pass_args=True))
# log all errors # log all errors

Loading…
Cancel
Save