From b72305330aa95a0fbbfd4ab4e2ebd440d163e3d0 Mon Sep 17 00:00:00 2001
From: deurstann <tristan.derouet@gmail.com>
Date: Fri, 8 Jan 2021 02:28:26 +0100
Subject: [PATCH] Added birthday feature : show me a/an/more DAY MONTH

---
 launch.py | 38 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 36 insertions(+), 2 deletions(-)

diff --git a/launch.py b/launch.py
index 153bd4d..b311bd7 100644
--- a/launch.py
+++ b/launch.py
@@ -5,6 +5,8 @@ import random
 import re
 import csv
 import aiohttp
+import requests
+import datetime
 
 from dotenv import load_dotenv
 
@@ -14,6 +16,7 @@ TOKEN = os.getenv('DISCORD_TOKEN')
 SECRET = os.getenv('REDDIT_SECRET')
 REDDIT_ID = os.getenv('REDDIT_ID')
 REDDIT_AGENT = os.getenv('REDDIT_AGENT')
+HTTP_USER_AGENT = os.getenv('HTTP_USER_AGENT')
 
 PROXY = os.getenv('PROXY')
 postLimit = int(os.getenv('POST_LIMIT'))
@@ -79,6 +82,29 @@ def create_embed(post,author,posturl):
 def send_waifu(post, author, posturl):
     return 'https://www.reddit.com' + str(posturl) + ' [' + str(author) + ']'
 
+def verify_date(day,month):
+    try:
+        datetime.datetime.strptime(day+"-"+month,"%d-%m")
+    except ValueError:
+        return False
+    return True
+
+def create_embed_birthday(day,month):
+    embed = discord.Embed(
+        color = discord.Colour.blue()
+        )
+    if month[0]=='0':month=month[1]
+    if day[0]=='0':day = day[1]
+    url = "http://www.animecharactersdatabase.com/api_series_characters.php?month="+month+"&day="+day
+    request = requests.get(url,headers = {"User-Agent":HTTP_USER_AGENT})
+    request_json = request.json()
+    characters = request_json["characters"]
+    selected_character = characters[random.randint(0,len(characters))]
+    embed.set_image(url=selected_character["character_image"])
+    embed.description = selected_character["name"]
+    return embed
+
+
 refresh_all_posts()
 
 if PROXY != "":
@@ -96,18 +122,26 @@ async def on_message(message):
         return
     lower = message.content.lower()
     if lower == "show me an help" or lower == "show me a help":
-        mess = "Usage : ``show me a xxxx`` or ``show me an xxxx`` or ``show me more xxxx``\nCurrently, I can show :```"
+        mess = "Usage : ``show me a xxxx`` or ``show me an xxxx`` or ``show me more xxxx`` or ``show me a/an/more bd DAY MONTH``\nCurrently, I can show :```"
         for entry in subreddits.values():
             mess += entry.name + " with a picture from r/" + entry.subName + "\n"
         mess += "\n```"
         await message.channel.send(mess)
     if ("show me a" in lower) or ("show me more" in lower):
+        birthday = re.search(r"show me (an?|more) bd ([0-9]+) ([0-9]+)", lower)
+        if birthday != None:
+            day = birthday.group(2)
+            month = birthday.group(3)
+            print('asking for birthday : ' + day + "/" + month)            
+            if(not verify_date(day,month)):
+                return
+            await message.channel.send(embed = create_embed_birthday(day,month))
         name = re.search(r"show me (an?|more) ([\S]+)s?", lower)
         if name == None:
             return
         else:
             name = name.group(2)
-
+        
         if name in subreddits.keys():
             print('asking for the following entry: ' + name)
             postnumber = random.randint(1,subreddits[name].totalimgs)
-- 
GitLab