Skip to content

Instantly share code, notes, and snippets.

@d1y
Forked from PlanetTeamSpeakk/nsfw.py
Created August 1, 2019 09:03
Show Gist options
  • Save d1y/be5142416223e9c1cb44102be1a72056 to your computer and use it in GitHub Desktop.
Save d1y/be5142416223e9c1cb44102be1a72056 to your computer and use it in GitHub Desktop.
import discord
from discord.ext import commands
from __main__ import send_cmd_help
import aiohttp
from bs4 import BeautifulSoup
import random
from .utils import checks
from cogs.utils.dataIO import dataIO
import os
class NSFW:
"""NSFW commands."""
def __init__(self, bot):
self.bot = bot
self.settings = dataIO.load_json("data/nsfw/settings.json")
@commands.group(pass_context=True)
async def nsfw(self, ctx):
"""Nsfw Commands"""
if ctx.message.channel.id not in self.settings['nsfw_channels']:
await self.bot.say("NSFW commands are not allowed in this channel, this can be toggled with {}togglensfw.".format(ctx.prefix))
return
if ctx.invoked_subcommand is None:
await self.bot.send_cmd_help(ctx)
@commands.command(pass_context=True)
@checks.admin_or_permissions()
async def togglensfw(self, ctx):
"""Toggles whether NSFW content should be allowed in this channel or not."""
if ctx.message.channel.id not in self.settings['nsfw_channels']:
self.settings['nsfw_channels'].append(ctx.message.channel.id)
await self.bot.say("NSFW commands are now enabled in this channel.")
else:
self.settings['nsfw_channels'].remove(ctx.message.channel.id)
await self.bot.say("NSFW commands are now disabled in this channel.")
dataIO.save_json("data/nsfw/settings.json", self.settings)
@nsfw.command(pass_context=True)
async def yandere(self, ctx):
"""Shows a random image from Yandere"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("https://yande.re/post/random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="highres").get("href")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def konachan(self, ctx):
"""Shows a random image from Konachan"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("https://konachan.com/post/random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="highres").get("href")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def e621(self, ctx):
"""Shows a random image from e621"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("https://e621.net/post/random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="highres").get("href")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def rule34(self, ctx):
"""Shows a random image from Rule34"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://rule34.xxx/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say('http:' + image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def danbooru(self, ctx):
"""Shows a random image from Danbooru"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://danbooru.donmai.us/posts/random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say('http://danbooru.donmai.us' + image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def gelbooru(self, ctx):
"""Shows a random image from Gelbooru"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://www.gelbooru.com/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def tbib(self, ctx):
"""Shows a random image from TBib"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://www.tbib.org/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say("http:" + image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def xbooru(self, ctx):
"""Shows a random image from Xbooru"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://xbooru.com/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def furrybooru(self, ctx):
"""Shows a random image from Furrybooru"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://furry.booru.org/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def drunkenpumken(self, ctx):
"""Shows a random image from DrunkenPumken"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("http://drunkenpumken.booru.org/index.php?page=post&s=random")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def lolibooru(self, ctx):
"""Shows a random image from Lolibooru"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
query = ("https://lolibooru.moe/post/random/")
page = await aiohttp.get(query)
page = await page.text()
soup = BeautifulSoup(page, 'html.parser')
image = soup.find(id="image").get("src")
image = image.replace(' ','%20')
await self.bot.say(image)
except Exception as e:
await self.bot.say(":x: **Error:** `{}`".format(e))
@nsfw.command(pass_context=True)
async def ysearch(self, ctx, *tags: str):
"""Search Yandere With A Tag"""
if ctx.message.channel.id in self.settings['nsfw_channels']:
if tags == ():
await self.bot.say(":warning: Tags are missing.")
else:
try:
tags = ("+").join(tags)
query = ("https://yande.re/post.json?limit=42&tags=" + tags)
page = await aiohttp.get(query)
json = await page.json()
if json != []:
await self.bot.say(random.choice(json)['jpeg_url'])
else:
await self.bot.say(":warning: Yande.re has no images for requested tags.")
except Exception as e:
await self.bot.say(":x: `{}`".format(e))
@nsfw.command(pass_context=True)
async def boobs(self, ctx):
"""Shows some boobs."""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
search = ("http://api.oboobs.ru/boobs/{}".format(random.randint(0, 10394)))
async with aiohttp.get(search) as r:
result = await r.json()
boob = random.choice(result)
boob = "http://media.oboobs.ru/{}".format(boob["preview"])
except Exception as e:
await self.bot.say("{} ` Error getting results.`".format(ctx.message.author.mention))
return
await self.bot.say(boob)
@nsfw.command(pass_context=True)
async def ass(self, ctx):
"""Shows some ass."""
if ctx.message.channel.id in self.settings['nsfw_channels']:
try:
search = ("http://api.obutts.ru/butts/{}".format(random.randint(0, 4378)))
async with aiohttp.get(search) as r:
result = await r.json()
butt = random.choice(result)
butt = "http://media.obutts.ru/{}".format(butt["preview"])
except Exception as e:
await self.bot.say("{} ` Error getting results.`".format(ctx.message.author.mention))
return
await self.bot.say(butt)
def check_folders():
if not os.path.exists("data/nsfw"):
print("Creating data/nsfw folder...")
os.makedirs("data/nsfw")
def check_files():
if not os.path.exists("data/nsfw/settings.json"):
print("Creating data/nsfw/settings.json file...")
dataIO.save_json("data/nsfw/settings.json", {'nsfw_channels': []})
def setup(bot):
check_folders()
check_files()
bot.add_cog(NSFW(bot))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment