from telegram.ext import CommandHandler import os import datetime import telegram import logging import json from config import updater from config import bot os.environ['TZ'] = 'Europe/Berlin' logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) j = updater.job_queue def hello(bot, update): print(update) update.message.reply_text( 'Hello {}'.format(update.message.from_user.first_name)) def start(bot, update): update.message.reply_text("Du möchtest auch jeden morgen Motiviert in den Tag starten?") update.message.reply_text("Dann abonniere jetzt diesen motivierenden Bot der dir jeden Morgen um 6 perfekt für deinen Tag vorbereitet") update.message.reply_text("Schreibe dafür einen /subscribe .... wenn du irgendwan genug motiviert bist kannst du dich mit /unsubscribe wieder abmleden. Warum das ganze? Einfach /about fragen") def subscribe(bot, update): users = getAllUsers() for user in users: if user["chatId"] == update["message"]["chat"]["id"]: update.message.reply_text("Du willst wohl besonders motiviert in den Tag starten, dabei hast du doch schon aboniert"); return; users.append({"chatId": update["message"]["chat"]["id"]}) saveUser(users) update.message.reply_text("Danke, ab jetzt wirst du jeden morgen motiviert!"); def unsubscribe(bot, update): users = getAllUsers() newUserList = [] unsubscribed = False for user in users: if user["chatId"] == update["message"]["chat"]["id"]: unsubscribed = True else: newUserList.append(user) if unsubscribed: saveUser(newUserList) update.message.reply_text("Schade das du uns verlassen hast, ich weiß nicht ob ich so morgen weiter motivieren kann :'(") else: update.message.reply_text("Du stehst nicht in meiner Abonenten liste, aboniere einfach mit einem /subscribe") def getAllUsers(): if os.path.exists('pv/user.txt'): f = open("pv/user.txt") content = f.read(); f.close() return json.loads(content) return [] def about(bot, update): update.message.reply_text("Ich habe versucht den möglichst billigsten Telegram bot zu schreiben den es gibt der dir möglichst schnell aber mit qualität auf die nerven geht, den quellcode gibt es hier: https://git.keks.cloud/kekskurse/motivationsBot die Audiodatein nicht. Viel Spaß, Sören") def saveUser(users): j = json.dumps(users) f = open("pv/user.txt", "w") f.write(j) f.close() def sendAudio(a, b): day = str(datetime.datetime.now().year)+"-"+str(datetime.datetime.now().month)+"-"+str(datetime.datetime.now().day) if datetime.datetime.now().hour >= 6: if not os.path.exists('./pv/sendDays/'+day): f = open("./pv/sendDays/"+day, "w") f.write("DONE") f.close() users = getAllUsers() if os.path.exists('mp3/'+day+'.mp3'): for user in users: a.send_message(chat_id=user["chatId"], text='Der frühe Vogel fängt den Wurm, und hier ist deine motivation für heute:') a.send_audio(chat_id=user["chatId"], audio=open('mp3/'+day+'.mp3', 'rb')) else: for user in users: a.send_message(chat_id=user["chatId"], text='Für heute habe ich keine Motivierende nachricht gefunden, das wird bestimmt ein scheiß tag :(') if not os.path.isdir("pv/sendDays"): os.makedirs("pv/sendDays") updater.dispatcher.add_handler(CommandHandler('hello', hello)) updater.dispatcher.add_handler(CommandHandler('subscribe', subscribe)) updater.dispatcher.add_handler(CommandHandler('unsubscribe', unsubscribe)) updater.dispatcher.add_handler(CommandHandler('start', start)) updater.dispatcher.add_handler(CommandHandler('about', about)) job_minute = j.run_repeating(sendAudio, interval=60, first=0) updater.start_polling() updater.idle()