This repository has been archived on 2019-06-21. You can view files and clone it, but cannot push or open issues or pull requests.
motivationsBot/run.py

103 lines
3.9 KiB
Python

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()