You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.0 KiB
85 lines
2.0 KiB
import praw
|
|
from prawcore import exceptions
|
|
import requests
|
|
|
|
|
|
def get_post_type(url):
|
|
header = requests.head(url).headers
|
|
if 'Content-Type' in header:
|
|
return header['Content-Type']
|
|
else:
|
|
return ''
|
|
|
|
|
|
def get_reddit_instance():
|
|
reddit_config = {}
|
|
with open("config/reddit_config") as tmp_file:
|
|
for line in tmp_file:
|
|
(key, val) = line.split('=')
|
|
reddit_config[key] = val.replace('\n', '')
|
|
|
|
return praw.Reddit(
|
|
user_agent=reddit_config['user_agent'],
|
|
client_id=reddit_config['client_id'],
|
|
client_secret=reddit_config['client_secret']
|
|
)
|
|
|
|
|
|
def get_reddit_post(sub, is_image_post=False):
|
|
reddit_instance = get_reddit_instance()
|
|
|
|
try:
|
|
sub = reddit_instance.subreddit(sub)
|
|
post = sub.random()
|
|
|
|
except exceptions.NotFound:
|
|
return "Geile, gib gültiges Sub"
|
|
except exceptions.Forbidden:
|
|
return "Geile, gib freies Sub"
|
|
except Exception as e:
|
|
return e
|
|
|
|
if post == None:
|
|
return "Random geht in diesem Sub leider nicht :("
|
|
|
|
if is_image_post:
|
|
tries = 0
|
|
while "image" not in get_post_type(post.url) and tries < 5:
|
|
post = sub.random()
|
|
tries += 1
|
|
if tries >= 5:
|
|
return "Geile, gib Sub mit Bildern (über 5 Fehlversuche)"
|
|
|
|
return post
|
|
|
|
|
|
def wrong_dog(bot, update):
|
|
reddit(bot, update, ['whatswrongwithyourdog'])
|
|
|
|
|
|
def hamster(bot, update):
|
|
reddit_img(bot, update, ['hamsters'])
|
|
|
|
|
|
def reddit(bot, update, args):
|
|
if not args:
|
|
update.message.reply_text("Geile, sag sub")
|
|
return
|
|
|
|
sub = args[0]
|
|
update.message.reply_text(get_reddit_post(sub))
|
|
|
|
|
|
def reddit_img(bot, update, args):
|
|
if not args:
|
|
update.message.reply_text("Geile, sag sub")
|
|
return
|
|
sub = args[0]
|
|
post = get_reddit_post(sub, True)
|
|
|
|
try:
|
|
bot.send_photo(chat_id=update.message.chat_id, photo=post.url)
|
|
return
|
|
except AttributeError:
|
|
update.message.reply_text(post)
|
|
print("ERROR")
|