added reddit functions

This commit is contained in:
Remy Moll 2020-08-26 23:18:42 +02:00
parent 38bba58c88
commit ea7e849004
2 changed files with 105 additions and 22 deletions

@ -6,24 +6,45 @@ except:
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):
message = ""
try:
for submission in stream.subreddit(subreddit).hot(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"
def get_top(subreddit, number, return_type="text"):
if return_type == "text":
message = ""
try:
for submission in stream.subreddit(subreddit).top(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).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_top_image(subreddit, number):
images = []
try:
for submission in stream.subreddit(subreddit).hot(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:
t = {"image": submission.url, "caption": submission.title}
images.append(t)
return images
except:
return ["Api call failed, sorry"]

68
main.py

@ -43,6 +43,7 @@ class ChatBot():
"cronjob" : self.bot_cronjob,
"joke" : self.bot_tell_joke,
"meme" : self.bot_send_meme,
"news" : self.bot_send_news,
}
@ -300,19 +301,80 @@ class ChatBot():
def bot_tell_joke(self, params):
"""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)
def bot_send_meme(self, params):
"""Sends a meme from r/memes"""
urls = reddit.get_top_image("memes",3)
"""Sends a meme from r/"""
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:
try:
self.telegram.send_photo(u["image"], u["caption"])
except:
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")