added reddit functions
This commit is contained in:
		| @@ -6,21 +6,42 @@ except: | |||||||
|  |  | ||||||
| stream = praw.Reddit(client_id = keys.reddit_id, client_secret = keys.reddit_secret, user_agent=keys.reddit_user_agent) | stream = praw.Reddit(client_id = keys.reddit_id, client_secret = keys.reddit_secret, user_agent=keys.reddit_user_agent) | ||||||
|  |  | ||||||
| def get_top_text(subreddit, number): | def get_top(subreddit, number, return_type="text"): | ||||||
|  |     if return_type == "text": | ||||||
|         message = "" |         message = "" | ||||||
|         try: |         try: | ||||||
|         for submission in stream.subreddit(subreddit).hot(limit=number): |             for submission in stream.subreddit(subreddit).top(limit=number): | ||||||
|                 if not submission.stickied: |                 if not submission.stickied: | ||||||
|                     message += "<b>" + submission.title + "</b>" + "\n" + submission.selftext + "\n\n\n" |                     message += "<b>" + submission.title + "</b>" + "\n" + submission.selftext + "\n\n\n" | ||||||
|             return message |             return message | ||||||
|         except: |         except: | ||||||
|             return "Api call failed, sorry" |             return "Api call failed, sorry" | ||||||
|  |     else: | ||||||
|  |  | ||||||
| def get_top_image(subreddit, number): |  | ||||||
|         images = [] |         images = [] | ||||||
|         try: |         try: | ||||||
|         for submission in stream.subreddit(subreddit).hot(limit=number): |             for submission in stream.subreddit(subreddit).top(limit=number): | ||||||
|  |                 if not submission.stickied: | ||||||
|  |                     t = {"image": submission.url, "caption": submission.title} | ||||||
|  |                     images.append(t) | ||||||
|  |             return images | ||||||
|  |         except: | ||||||
|  |             return ["Api call failed, sorry"] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def get_random_rising(subreddit, number, return_type="text"): | ||||||
|  |     if return_type == "text": | ||||||
|  |         message = "" | ||||||
|  |         try: | ||||||
|  |             for submission in stream.subreddit(subreddit).random_rising(limit=number): | ||||||
|  |                 if not submission.stickied: | ||||||
|  |                     message += "<b>" + submission.title + "</b>" + "\n" + submission.selftext + "\n\n\n" | ||||||
|  |             return message | ||||||
|  |         except: | ||||||
|  |             return "Api call failed, sorry" | ||||||
|  |     else: | ||||||
|  |         images = [] | ||||||
|  |         try: | ||||||
|  |             for submission in stream.subreddit(subreddit).random_rising(limit=number): | ||||||
|                 if not submission.stickied: |                 if not submission.stickied: | ||||||
|                     t = {"image": submission.url, "caption": submission.title} |                     t = {"image": submission.url, "caption": submission.title} | ||||||
|                     images.append(t) |                     images.append(t) | ||||||
|   | |||||||
							
								
								
									
										68
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								main.py
									
									
									
									
									
								
							| @@ -43,6 +43,7 @@ class ChatBot(): | |||||||
|             "cronjob" : self.bot_cronjob, |             "cronjob" : self.bot_cronjob, | ||||||
|             "joke" : self.bot_tell_joke, |             "joke" : self.bot_tell_joke, | ||||||
|             "meme" : self.bot_send_meme, |             "meme" : self.bot_send_meme, | ||||||
|  |             "news" : self.bot_send_news, | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -300,19 +301,80 @@ class ChatBot(): | |||||||
|  |  | ||||||
|     def bot_tell_joke(self, params): |     def bot_tell_joke(self, params): | ||||||
|         """Tells you the top joke on r/jokes""" |         """Tells you the top joke on r/jokes""" | ||||||
|         joke = reddit.get_top_text("jokes",3) |         if len(params) == 0: | ||||||
|  |             number = 1 | ||||||
|  |         elif len(params) == 1: | ||||||
|  |             number = int(params[0]) | ||||||
|  |         else: | ||||||
|  |             self.telegram.send_text("Jokes takes only one parameter, the number of jokes.") | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         joke = reddit.get_random_rising("jokes", number, "text") | ||||||
|         self.telegram.send_message(joke) |         self.telegram.send_message(joke) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def bot_send_meme(self, params): |     def bot_send_meme(self, params): | ||||||
|         """Sends a meme from r/memes""" |         """Sends a meme from r/""" | ||||||
|         urls = reddit.get_top_image("memes",3) |         subreddit_name = "memes" | ||||||
|  |         subnames = { | ||||||
|  |             "physics" : "physicsmemes", | ||||||
|  |             "dank" : "dankmemes", | ||||||
|  |             "biology" : "biologymemes", | ||||||
|  |             "math" : "mathmemes" | ||||||
|  |         } | ||||||
|  |         number = 1 | ||||||
|  |  | ||||||
|  |         if len(params) == 1: | ||||||
|  |             try: | ||||||
|  |                 number = int(params[0]) | ||||||
|  |             except: | ||||||
|  |                 try: | ||||||
|  |                     subreddit_name = subnames[str(params[0])] | ||||||
|  |                 except: | ||||||
|  |                     self.telegram.send_message("Topic not found") | ||||||
|  |         elif len(params) == 2: | ||||||
|  |             try: | ||||||
|  |                 number = int(params[0]) | ||||||
|  |                 subreddit_name = subnames[str(params[1]).lower()] | ||||||
|  |             except: | ||||||
|  |                 number = int(params[1]) | ||||||
|  |                 subreddit_name = subnames[str(params[0]).lower()] | ||||||
|  |  | ||||||
|  |         elif len(params) > 2: | ||||||
|  |             self.telegram.send_message("Memes takes 2 parameters: the number of memes, and their topic.") | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         urls = reddit.get_random_rising(subreddit_name, number, "photo") | ||||||
|         for u in urls: |         for u in urls: | ||||||
|             try: |             try: | ||||||
|                 self.telegram.send_photo(u["image"], u["caption"]) |                 self.telegram.send_photo(u["image"], u["caption"]) | ||||||
|             except: |             except: | ||||||
|                 self.telegram.send_message("Meme won't yeet") |                 self.telegram.send_message("Meme won't yeet") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def bot_send_news(self, params): | ||||||
|  |         """Sends the first entries for new from r/""" | ||||||
|  |         subreddit_name = "worldnews" | ||||||
|  |         subnames = { | ||||||
|  |             "germany" : "germannews", | ||||||
|  |             "france" : "francenews", | ||||||
|  |             "europe" : "eunews", | ||||||
|  |             "usa" : "usanews" | ||||||
|  |         } | ||||||
|  |         if len(params) == 1: | ||||||
|  |             try: | ||||||
|  |                 subreddit_name = subnames[str(params[0]).lower()] | ||||||
|  |             except: | ||||||
|  |                 self.telegram.send_message("Argument not supported") | ||||||
|  |                 return | ||||||
|  |         elif len(params) > 1: | ||||||
|  |             self.telegram.send_message("News takes one argument: the location (world, germany, europe, ...)") | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         text = reddit.get_top(subreddit_name, 10, "text") | ||||||
|  |         self.telegram.send_message(text) | ||||||
|  |  | ||||||
|  |  | ||||||
| ####################################################################### | ####################################################################### | ||||||
|  |  | ||||||
| bot = ChatBot("ChatterBot", version="1.03") | bot = ChatBot("ChatterBot", version="1.03") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Remy Moll
					Remy Moll