Now the code is clean and tidy

This commit is contained in:
Stefano Assenzo 2022-12-10 14:21:53 +00:00
parent 42173ad5df
commit 18719f4435
7 changed files with 49 additions and 36 deletions

View File

@ -43,7 +43,7 @@ def freegame_command(message, bot=bot):
#Command /subscribe #Command /subscribe
@bot.message_handler(commands=['subscribe']) @bot.message_handler(commands=['subscribe'])
def subscribe(message, bot=bot, collection_game=collection_game): def subscribe(message, bot=bot, collection_game=collection_game, OBJECTID_idlist=OBJECTID_idlist):
command_subscribe.subscribe_command(message, bot, collection_game) command_subscribe.subscribe_command(message, bot, collection_game)
def event_game(collection_game=collection_game, collection_id=collection_id, bot=bot, OBJECTID_idlist=OBJECTID_idlist, OBJECTID_game1=OBJECTID_game1, OBJECTID_game2=OBJECTID_game2): def event_game(collection_game=collection_game, collection_id=collection_id, bot=bot, OBJECTID_idlist=OBJECTID_idlist, OBJECTID_game1=OBJECTID_game1, OBJECTID_game2=OBJECTID_game2):

View File

@ -1,9 +1,12 @@
import requests import requests
def freegame_command(message, bot): def freegame_command(message, bot):
chat_id = message.chat.id chat_id = message.chat.id #Get chat id
url = "https://api.plenusbot.xyz/epic_games?country=IT" #Connect to API
response = requests.get(url).json() url = "https://api.plenusbot.xyz/epic_games?country=IT" #URL API
response = requests.get(url).json() #API in JSON
#Take data from API (Current Game 1)
image_currentgames1 = response['currentGames'][0]['keyImages'][0]['url'] # First image current games image_currentgames1 = response['currentGames'][0]['keyImages'][0]['url'] # First image current games
current_games1 = response['currentGames'][0]['title'] # First title current games current_games1 = response['currentGames'][0]['title'] # First title current games
current_games_description1 = response['currentGames'][0]['description'] # First description current games current_games_description1 = response['currentGames'][0]['description'] # First description current games
@ -11,6 +14,7 @@ def freegame_command(message, bot):
current_games_endate1 = response['currentGames'][0]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate'] current_games_endate1 = response['currentGames'][0]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate']
current_games_price1 = response['currentGames'][0]['price']['totalPrice']['fmtPrice']['originalPrice'] current_games_price1 = response['currentGames'][0]['price']['totalPrice']['fmtPrice']['originalPrice']
#Take data from API (Current Game 2)
image_currentgames2 = response['currentGames'][1]['keyImages'][0]['url'] # First image current games image_currentgames2 = response['currentGames'][1]['keyImages'][0]['url'] # First image current games
current_games2 = response['currentGames'][1]['title'] # First title current games current_games2 = response['currentGames'][1]['title'] # First title current games
current_games_description2 = response['currentGames'][1]['description'] # First description current games current_games_description2 = response['currentGames'][1]['description'] # First description current games
@ -18,22 +22,26 @@ def freegame_command(message, bot):
current_games_endate2 = response['currentGames'][1]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate'] current_games_endate2 = response['currentGames'][1]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate']
current_games_price2 = response['currentGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice'] current_games_price2 = response['currentGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice']
#Send notification to user #Send notification to user (Current Game 1)
title_description_1 = current_games1 + "\n\n<b>About:</b>\n" + current_games_description1 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate1 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate1 + "\n" + "\n<b>Price:</b>\n" + current_games_price1 + "" + "Free" # Send title, description, start date and price first current game title_description_1 = current_games1 + "\n\n<b>About:</b>\n" + current_games_description1 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate1 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate1 + "\n" + "\n<b>Price:</b>\n" + current_games_price1 + "" + "Free" # Send title, description, start date and price first current game
img_1 = bot.send_photo(message.chat.id, image_currentgames1) # Send image first current games img_1 = bot.send_photo(message.chat.id, image_currentgames1) # Send image first current games
send_message = bot.send_message(chat_id, title_description_1, parse_mode="HTML") # Send all send_message = bot.send_message(chat_id, title_description_1, parse_mode="HTML") # Send all
#Send notification to user (Current Game 2)
title_description_2 = current_games2 + "\n\n<b>About:</b>\n" + current_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate2 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate2 + "\n" + "\n<b>Price:</b>\n" + current_games_price2 + "" + "Free" # Send title, description, start date and price second current game title_description_2 = current_games2 + "\n\n<b>About:</b>\n" + current_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate2 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate2 + "\n" + "\n<b>Price:</b>\n" + current_games_price2 + "" + "Free" # Send title, description, start date and price second current game
img_2 = bot.send_photo(message.chat.id, image_currentgames2) # Send image second current games img_2 = bot.send_photo(message.chat.id, image_currentgames2) # Send image second current games
send_message = bot.send_message(chat_id, title_description_2, parse_mode="HTML") # Send all send_message = bot.send_message(chat_id, title_description_2, parse_mode="HTML") # Send all
#Try search third game
try: try:
#Take data from API (Current Game 3)
image_currentgames3 = response['currentGames'][2]['keyImages'][0]['url'] # First image current games image_currentgames3 = response['currentGames'][2]['keyImages'][0]['url'] # First image current games
current_games3 = response['currentGames'][2]['title'] # First title current games current_games3 = response['currentGames'][2]['title'] # First title current games
current_games_description3 = response['currentGames'][2]['description'] # First description current games current_games_description3 = response['currentGames'][2]['description'] # First description current games
current_games_startdate3 = response['currentGames'][2]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['startDate'] current_games_startdate3 = response['currentGames'][2]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['startDate']
current_games_endate3 = response['currentGames'][2]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate'] current_games_endate3 = response['currentGames'][2]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate']
current_games_price3 = response['currentGames'][2]['price']['totalPrice']['fmtPrice']['originalPrice'] current_games_price3 = response['currentGames'][2]['price']['totalPrice']['fmtPrice']['originalPrice']
#Send notification to user (Current Game 3)
title_description_3 = current_games3 + "\n\n<b>About:</b>\n" + current_games_description3 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate3 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate3 + "\n" + "\n<b>Price:</b>\n" + current_games_price3 + "" + "Free" # Send title, description, start date and price second current game title_description_3 = current_games3 + "\n\n<b>About:</b>\n" + current_games_description3 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate3 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate3 + "\n" + "\n<b>Price:</b>\n" + current_games_price3 + "" + "Free" # Send title, description, start date and price second current game
img_3 = bot.send_photo(message.chat.id, image_currentgames3) # Send image second current games img_3 = bot.send_photo(message.chat.id, image_currentgames3) # Send image second current games
send_message = bot.send_message(chat_id, title_description_3, parse_mode="HTML") # Send all send_message = bot.send_message(chat_id, title_description_3, parse_mode="HTML") # Send all

View File

@ -1,34 +1,41 @@
import requests import requests
def soon_command(message, bot): def soon_command(message, bot):
chat_id = message.chat.id chat_id = message.chat.id #Get chat id
try: try:
url = "https://api.plenusbot.xyz/epic_games?country=IT" # Get data from API
response = requests.get(url).json() url = "https://api.plenusbot.xyz/epic_games?country=IT" # URL API
# Title of future games response = requests.get(url).json() #API in JSON
#Take data from API (Future Game 1)
image_futuregames1 = response['nextGames'][0]['keyImages'][0]['url'] # First image future games image_futuregames1 = response['nextGames'][0]['keyImages'][0]['url'] # First image future games
future_games1 = response['nextGames'][0]['title'] # First title future games future_games1 = response['nextGames'][0]['title'] # First title future games
future_games_description1 = response['nextGames'][0]['description'] # First description future games future_games_description1 = response['nextGames'][0]['description'] # First description future games
future_games_startdate1 = response['nextGames'][0]['promotions']['upcomingPromotionalOffers'][0]['promotionalOffers'][0]['startDate'] future_games_startdate1 = response['nextGames'][0]['promotions']['upcomingPromotionalOffers'][0]['promotionalOffers'][0]['startDate']
future_games_price1 = response['nextGames'][0]['price']['totalPrice']['fmtPrice']['originalPrice'] future_games_price1 = response['nextGames'][0]['price']['totalPrice']['fmtPrice']['originalPrice']
#Take data from API (Future Game 2)
image_futuregames2 = response['nextGames'][1]['keyImages'][1]['url'] # Second image future games image_futuregames2 = response['nextGames'][1]['keyImages'][1]['url'] # Second image future games
future_games2 = response['nextGames'][1]['title'] # Second title future games future_games2 = response['nextGames'][1]['title'] # Second title future games
future_games_description2 = response['nextGames'][1]['description'] # Second description future games future_games_description2 = response['nextGames'][1]['description'] # Second description future games
future_games_startdate2 = response['nextGames'][1]['promotions']['upcomingPromotionalOffers'][0]['promotionalOffers'][0]['startDate'] future_games_startdate2 = response['nextGames'][1]['promotions']['upcomingPromotionalOffers'][0]['promotionalOffers'][0]['startDate']
future_games_price2 = response['nextGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice'] future_games_price2 = response['nextGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice']
#Send notification to user (Future Game 1)
title_description_1 = future_games1 + "\n\n<b>About:</b>\n" + future_games_description1 + "\n" + "\n<b>Start Date:</b>\n" + future_games_startdate1 + "\n" + "\n<b>Price:</b>\n" + future_games_price1 + "" + "Free" # Send title, description, start date and price first future game title_description_1 = future_games1 + "\n\n<b>About:</b>\n" + future_games_description1 + "\n" + "\n<b>Start Date:</b>\n" + future_games_startdate1 + "\n" + "\n<b>Price:</b>\n" + future_games_price1 + "" + "Free" # Send title, description, start date and price first future game
img_1 = bot.send_photo(message.chat.id, image_futuregames1) # Send image first future games img_1 = bot.send_photo(message.chat.id, image_futuregames1) # Send image first future games
send_message = bot.send_message(chat_id, title_description_1, parse_mode="HTML") # Send all send_message = bot.send_message(chat_id, title_description_1, parse_mode="HTML") # Send all
#Send notification to user (Future Game 2)
title_description_2 = future_games2 + "\n\n<b>About:</b>\n" + future_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + future_games_startdate2 + "\n" + "\n<b>Price:</b>\n" + future_games_price2 + "" + "Free" # Send title, description, start date and price second future game title_description_2 = future_games2 + "\n\n<b>About:</b>\n" + future_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + future_games_startdate2 + "\n" + "\n<b>Price:</b>\n" + future_games_price2 + "" + "Free" # Send title, description, start date and price second future game
img_2 = bot.send_photo(message.chat.id, image_futuregames2) # Send image second future games img_2 = bot.send_photo(message.chat.id, image_futuregames2) # Send image second future games
send_message = bot.send_message(chat_id, title_description_2, parse_mode="HTML") # Send all send_message = bot.send_message(chat_id, title_description_2, parse_mode="HTML") # Send all
except: except:
bot.send_message(chat_id, "An error has occurred, probably new games have not been revealed or there are problems with the API. \nWe apologize for the inconvenience") bot.send_message(chat_id, "An error has occurred, probably new games have not been revealed or there are problems with the API. \nWe apologize for the inconvenience")
#Try search third game
try: try:
#Take data from API (Future Game 3)
image_futuregames3 = response['nextGames'][0]['keyImages'][2]['url'] # Third image future games image_futuregames3 = response['nextGames'][0]['keyImages'][2]['url'] # Third image future games
future_games3 = response['nextGames'][2]['title'] # Third title future games future_games3 = response['nextGames'][2]['title'] # Third title future games
future_games_description3 = response['nextGames'][2]['description'] # Third description future games future_games_description3 = response['nextGames'][2]['description'] # Third description future games

View File

@ -1,5 +1,5 @@
def start_command(message, bot): def start_command(message, bot):
print("Hei") chat_id = message.chat.id #Get chat id
chat_id = message.chat.id #Send message
messageText = "✋ Welcome to <b>Epic Games Notifier</b>\n\n📱 You will be notified every week when there are new free games in the Epic Games Store. \n\n👨‍💻 Created and developed by @Stef58_Official" messageText = "✋ Welcome to <b>Epic Games Notifier</b>\n\n📱 You will be notified every week when there are new free games in the Epic Games Store. \n\n👨‍💻 Created and developed by @Stef58_Official"
bot.send_message(chat_id, messageText, parse_mode="HTML") bot.send_message(chat_id, messageText, parse_mode="HTML")

View File

@ -1,13 +1,12 @@
from bson.objectid import ObjectId from bson.objectid import ObjectId
import os import os
OBJECTID_idlist = os.getenv('OBJECTID_idlist')
def subscribe_command(message, bot, collection_id): def subscribe_command(message, bot, collection_id, OBJECTID_idlist):
#Register the user chat_id = message.chat.id #Get chat id
chat_id = message.chat.id send_message = bot.send_message(chat_id, "✅ You have been successfully subscribed to Epic Games Store Free Games notifications!") #Send message
send_message = bot.send_message(chat_id, "✅ You have been successfully subscribed to Epic Games Store Free Games notifications!")
#Get the ids of all users who write /subscribe #Get the ids of all users who write /subscribe
take_id = message.from_user.id take_id = message.from_user.id #Get user id
#Insert the id of the user who writes /subscribe in the database
collection_id.update_one( collection_id.update_one(
{ "_id": ObjectId(OBJECTID_idlist)}, { "_id": ObjectId(OBJECTID_idlist)},
{ {

View File

@ -2,37 +2,37 @@ from . import notification_game
import requests import requests
import time import time
#Function that waits 10 seconds before trying again
def recheck_game(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2): def recheck_game(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2):
time.sleep(10) time.sleep(10)
a(collection_game=collection_game, collection_id=collection_id, bot=bot, OBJECTID_idlist=OBJECTID_idlist, OBJECTID_game1=OBJECTID_game1, OBJECTID_game2=OBJECTID_game2) a(collection_game=collection_game, collection_id=collection_id, bot=bot, OBJECTID_idlist=OBJECTID_idlist, OBJECTID_game1=OBJECTID_game1, OBJECTID_game2=OBJECTID_game2)
#Function for send every week the notification #Function for check new games, if there are a new game, send notification
def a(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2): def a(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2):
try: try:
#Check for new games #Connect to API
url = "https://api.plenusbot.xyz/epic_games?country=IT" url = "https://api.plenusbot.xyz/epic_games?country=IT" #URL API
response = requests.get(url).json() response = requests.get(url).json() #API in JSON
# Title of current games # Title of current games
current_games_title1 = response['currentGames'][0]['title'] current_games_title1 = response['currentGames'][0]['title'] #Title of first game
current_games_title2 = response['currentGames'][1]['title'] current_games_title2 = response['currentGames'][1]['title'] #Title of second game
#Check first game #Check first game
search_game1 = collection_game.find_one({"Game 1" : current_games_title1}) search_game1 = collection_game.find_one({"Game 1" : current_games_title1}) #Search game1 in MongoDB
search_game2 = collection_game.find_one({"Game 2" : current_games_title2}) search_game2 = collection_game.find_one({"Game 2" : current_games_title2}) #Search game2 in MongoDB
print(search_game1) if search_game1 is None: #If game1 is not in MongoDB send notification
if search_game1 is None:
#Send notification if title game is changed #Send notification if title game is changed
print("Found a new 1 game!") print("Found a new 1 game!")
print("Now I'm sending the notification to everyone.") print("Now I'm sending the notification to everyone.")
notification_game.notification_game1(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1) notification_game.notification_game1(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1)
if search_game2 is None: if search_game2 is None: #If game2 is not in MongoDB send notification
#Send notification if title game is changed #Send notification if title game is changed
print("Found a new 2 game!") print("Found a new 2 game!")
print("Now I'm sending the notification to everyone.") print("Now I'm sending the notification to everyone.")
notification_game.notification_game2(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2) notification_game.notification_game2(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2)
else: else:
#If new game is changed recheck every 10 second #If new game is not changed recheck every 10 second
print("The game is not changed") print("The game is not changed")
recheck_game(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2) recheck_game(collection_game, collection_id, bot, OBJECTID_idlist, OBJECTID_game1, OBJECTID_game2)
except: except:

View File

@ -46,13 +46,12 @@ def notification_game2(collection_game, collection_id, bot, OBJECTID_idlist, OBJ
current_games_endate2 = response['currentGames'][1]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate'] # End public release second game current_games_endate2 = response['currentGames'][1]['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['endDate'] # End public release second game
current_games_price2 = response['currentGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice'] # Original price second game current_games_price2 = response['currentGames'][1]['price']['totalPrice']['fmtPrice']['originalPrice'] # Original price second game
query = {"_id": ObjectId(OBJECTID_idlist)} query = {"_id": ObjectId(OBJECTID_idlist)} #Take ObjectID for search ID user
filter = {"_id": 0} filter = {"_id": 0}
a = collection_id.find_one(query, filter) collection_find = collection_id.find_one(query, filter)
#Get just the array array_username = collection_find["username"] #Get the array
b = a["username"] for i in array_username:
for i in b:
title_description_2 = current_games_title2 + "\n\n<b>About:</b>\n" + current_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate2 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate2 + "\n" + "\n<b>Price:</b>\n" + current_games_price2 + "" + "Free" # Send title, description, start date and price second current game title_description_2 = current_games_title2 + "\n\n<b>About:</b>\n" + current_games_description2 + "\n" + "\n<b>Start Date:</b>\n" + current_games_startdate2 + "\n" + "\n<b>End Date:</b>\n" + current_games_endate2 + "\n" + "\n<b>Price:</b>\n" + current_games_price2 + "" + "Free" # Send title, description, start date and price second current game
img_2 = bot.send_photo(i, current_games_images2) # Send image second current games img_2 = bot.send_photo(i, current_games_images2) # Send image second current games
send_message = bot.send_message(i, title_description_2, parse_mode="HTML") # Send all send_message = bot.send_message(i, title_description_2, parse_mode="HTML") # Send all