diff --git a/src/bot/telegram/main.py b/src/bot/telegram/main.py new file mode 100644 index 0000000..0c6f084 --- /dev/null +++ b/src/bot/telegram/main.py @@ -0,0 +1,96 @@ +from bson.objectid import ObjectId +from dotenv import load_dotenv +from telebot import telebot +import threading +import datetime +import schedule +import pymongo +import urllib +import os + +load_dotenv() +PASSWORD_MONGODB = os.getenv('PASSWORD_MONGODB') #Password for MongoDB +URL_MONGODB = os.getenv('URL_MONGODB') #URL for MongoDB +mongo_url = "mongodb+srv://elci:" + urllib.parse.quote_plus(PASSWORD_MONGODB) + URL_MONGODB #URL for MongoDB (with password) +client = pymongo.MongoClient(mongo_url) #Connect to MongoDB +database = client["website-class"] #Database name +collection = database["subscribe"] #Collection school time table current +collection_schooltime = database["school-time-table"] #Collection school time table current +API_TOKEN = os.getenv('TELEGRAM_TOKEN') +bot = telebot.TeleBot(API_TOKEN) + +@bot.message_handler(commands=['start']) +def send_welcome(message): + bot.send_message(message.chat.id, "Hello, I'm a bot") + +@bot.message_handler(commands=['subscribe']) +def subscribe(message): + take_id = message.from_user.id #Get user id + #Insert the id of the user who writes /subscribe in the database + find_document_username = list(collection.find({}, {"_id": 1})) + array_username = find_document_username[0]["_id"] + collection.update_one( + { "_id": ObjectId(array_username)}, + { + "$push": { "username": take_id } + } + ) + bot.send_message(message.chat.id, "You are subscribed") + +def send_notification(): + today = datetime.datetime.today().strftime('%A') + tomorrow = (datetime.datetime.today() + datetime.timedelta(days=1)).strftime('%A') + now = datetime.datetime.now() + if today == "Saturday" or today == "Sunday": + print("Today is weekend") + else: + # Alla prima ora (7.50) manda una notifica a tutti gli utenti che hanno scritto /subscribe della materia della prima ora e così via + find_document = list(collection_schooltime.find({}, {"_id": 0, "School Subject": 1})) + collection_find_username = list(collection.find({}, {"username": 1,})) #Find all username in collection + array_username = collection_find_username[0]["username"] #Array with all username + #gaga = find_document['School Subject'][today][0]['Subject'] + print(now.strftime("%H:%M")) + if now.strftime("%H:%M") == "07:50": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][0]['Room']) + ", " + i['School Subject'][today][0]['Teacher'] + ", " + i['School Subject'][today][0]['Subject'] + "\n" + "Successiva: " + str(i['School Subject'][today][1]['Room']) + ", " + i['School Subject'][today][1]['Teacher'] + ", " + i['School Subject'][today][1]['Subject']) + elif now.strftime("%H:%M") == "08:50": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][1]['Room']) + ", " + i['School Subject'][today][1]['Teacher'] + ", " + str(i['School Subject'][today][1]['Subject']) + "\n" + "Successiva: " + str(i['School Subject'][today][2]['Room']) + ", " + i['School Subject'][today][2]['Teacher'] + ", " + i['School Subject'][today][2]['Subject']) + elif now.strftime("%H:%M") == "09:50": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][2]['Room']) + ", " + i['School Subject'][today][2]['Teacher'] + ", " + str(i['School Subject'][today][2]['Subject']) + "\n" + "Successiva: " + str(i['School Subject'][today][3]['Room']) + ", " + i['School Subject'][today][3]['Teacher'] + ", " + i['School Subject'][today][3]['Subject']) + elif now.strftime("%H:%M") == "11:05": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][3]['Room']) + ", " + i['School Subject'][today][3]['Teacher'] + ", " + str(i['School Subject'][today][3]['Subject']) + "\n" + "Successiva: " + str(i['School Subject'][today][4]['Room']) + ", " + i['School Subject'][today][4]['Teacher'] + ", " + i['School Subject'][today][4]['Subject']) + elif now.strftime("%H:%M") == "12:05": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][4]['Room']) + ", " + i['School Subject'][today][4]['Teacher'] + ", " + str(i['School Subject'][today][4]['Subject']) + "\n" + "Successiva: " + str(i['School Subject'][today][5]['Room']) + ", " + i['School Subject'][today][5]['Teacher'] + ", " + i['School Subject'][today][5]['Subject']) + elif now.strftime("%H:%M") == "13:05": + for i in find_document: + for b in array_username: + bot.send_message(b, str(i['School Subject'][today][5]['Room']) + ", " + i['School Subject'][today][5]['Teacher'] + ", " + str(i['School Subject'][today][5]['Subject'])) + elif now.strftime("%H:%M") == "21:00": + if tomorrow == "Sunday" or tomorrow == "Saturday": + print("Nope") + else: + for i in find_document: + for b in array_username: + bot.send_message(b, i['School Subject'][tomorrow][0]['Subject'] + ", " + i['School Subject'][tomorrow][0]['Teacher'] + "\n" + i['School Subject'][tomorrow][1]['Subject'] + ", " + i['School Subject'][tomorrow][1]['Teacher'] + "\n" + i['School Subject'][tomorrow][2]['Subject'] + ", " + i['School Subject'][tomorrow][2]['Teacher'] + "\n" + i['School Subject'][tomorrow][3]['Subject'] + ", " + i['School Subject'][tomorrow][3]['Teacher'] + "\n" + i['School Subject'][tomorrow][4]['Subject'] + ", " + i['School Subject'][tomorrow][4]['Teacher'] + "\n" + i['School Subject'][tomorrow][5]['Subject'] + ", " + i['School Subject'][tomorrow][5]['Teacher']) + +schedule.every().day.at("07:50").do(send_notification) +schedule.every().day.at("08:50").do(send_notification) +schedule.every().day.at("09:50").do(send_notification) +schedule.every().day.at("11:05").do(send_notification) +schedule.every().day.at("12:05").do(send_notification) +schedule.every().day.at("13:05").do(send_notification) +schedule.every().day.at("21:00").do(send_notification) +now = datetime.datetime.now() +t1 = threading.Thread(target=bot.polling).start() + +while True: + schedule.run_pending() diff --git a/src/bot/telegram/requirements.txt b/src/bot/telegram/requirements.txt index ca25296..6eac50c 100644 --- a/src/bot/telegram/requirements.txt +++ b/src/bot/telegram/requirements.txt @@ -3,4 +3,10 @@ urllib3==1.26.13 python-dotenv==0.21.0 schedule==1.1.0 telebot==0.0.5 -pybson==0.5.9 \ No newline at end of file +pybson==0.5.9 +pybson==0.5.9 +python-dotenv==0.21.0 +telebot==0.0.5 +schedule==1.1.0 +pymongo==4.3.3 +urllib3==1.26.13