added reddit functions
This commit is contained in:
parent
38bba58c88
commit
ea7e849004
@ -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
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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user