Merged in lewds (pull request #29)

Moving lewds into its own module and alphabatizing all the if statements in dragon-bot.py
This commit is contained in:
Luke Robles 2017-08-17 07:28:16 +00:00
commit f59c3ce21e
4 changed files with 127 additions and 131 deletions

View File

@ -5,7 +5,7 @@ RUN apk update && apk add --no-cache vim docker
RUN pip install requests discord.py docker pybooru pylint RUN pip install requests discord.py docker pybooru pylint
ADD app /app ADD app /app
RUN echo "\nTesting your python code for errors\n" && \ RUN printf "\n\nTesting your python code for errors\n\n" && \
pylint -E /app/*.py pylint -E /app/*.py
RUN printf "\n#########################\nRun dragon bot by typing \npython dragon-bot.py\n#########################\n\n" RUN printf "\n#########################\nRun dragon bot by typing \npython dragon-bot.py\n#########################\n\n"

View File

@ -4,12 +4,13 @@ import requests
import os import os
import decide import decide
import eight_ball
import excuse
import define_word import define_word
import help_methods
import discord import discord
import docker import docker
import eight_ball
import excuse
import help_methods
import lewds
import wallpaper import wallpaper
from pybooru import Danbooru from pybooru import Danbooru
@ -46,93 +47,6 @@ async def on_message(message):
is the same as the person who initiated the command is the same as the person who initiated the command
""" """
return m.author == message.author return m.author == message.author
def get_from_danbooru():
"""
get_from_danbooru()
returns a URL to an image on danbooru that matches a random tag
defined in the tag_list list
"""
booru = Danbooru('danbooru')
tag_list = [
'1girl',
'2girls',
'ass_visible_through_thighs',
'bare_legs'
'bikini',
'black_bikini',
'black_panties',
'blue_eyes',
'bra_pull',
'bra',
'breasts',
'cameltoe',
'clevage',
'condom_in_mouth',
'condom',
'from_below',
'gloves',
'highleg_bikini',
'highleg',
'highres',
'horns',
'large_breasts',
'leash',
'medium_breasts'
'miniskirt',
'nier_automata',
'nier',
'nipples',
'partially_visible_vulva',
'pencil_skirt',
'pussy_juice',
'pussy',
'skirt',
'small_breasts',
'thong_bikini',
'topless',
'wet_clothes',
'wet_panties',
'wet',
]
tag = random.choice(tag_list)
return "https://danbooru.donmai.us{}".format(
random.choice(
booru.post_list(
limit=500,
tags=tag,
random=True,
)
)['large_file_url'])
def get_from_reddit():
"""
get_from_reddit()
returns a URL to an image on reddit from a random board in the boards list
as long as it is hosted on one of the domains in the domains list
"""
boards = [
'2Booty',
'bakunyuu_hentai',
'ecchi',
'hentai',
'rule34',
'WesternHentai',
]
domains = [
'my.mixtape.moe',
'i.imgur.com',
'i.redd.it',
]
response = requests.get(
"https://reddit.com/r/{}.json?limit=500".format(random.choice(boards)),
headers = {'User-agent':'discord dragon-bot'}
).json()['data']['children']
image_urls = list(filter(lambda x: x['data']['domain'] in domains, response))
return random.choice(image_urls)['data']['url'].replace('http://', 'https://')
##### Looks like discord supports mentioning the bot. ##### Looks like discord supports mentioning the bot.
#### Need to think of something to do here #### Need to think of something to do here
@ -145,23 +59,37 @@ async def on_message(message):
eight_ball.check_8ball(message.content) eight_ball.check_8ball(message.content)
) )
if message.content.startswith('!cleanup') and message.author.id == '144986109804412928':
def is_bot(m):
return m.author == client.user
await client.purge_from(message.channel, limit=100, check=is_bot)
if message.content.startswith('!decide'):
await client.send_message(
message.channel,
"{} {}".format(
message.author.mention,
decide.decide(message.content)
)
)
if message.content.startswith('!define'): if message.content.startswith('!define'):
await client.send_message( await client.send_message(
message.channel, message.channel,
define_word.get_definition(message.content) define_word.get_definition(message.content)
) )
if message.content.startswith('!excuse'):
await client.send_message(message.channel, excuse.get_excuse())
if message.content.startswith('!help'): if message.content.startswith('!help'):
await client.send_message( await client.send_message(
message.channel, message.channel,
help_methods.parse_message(message.content) help_methods.parse_message(message.content)
) )
if 'autis' in message.content or message.content.startswith('!triggered'): if message.content.startswith('!lewd'):
await client.send_message(message.channel, 'https://i.imgur.com/g6yOJjp.gif') await client.send_message(message.channel, lewds.get_lewd(channel_name=message.channel.name))
if message.content.startswith('!excuse'):
await client.send_message(message.channel, excuse.get_excuse())
if message.content.startswith('!purge'): if message.content.startswith('!purge'):
num = 20 num = 20
@ -173,23 +101,6 @@ async def on_message(message):
await client.send_message(message.channel, "You need to give me a number, you entered {}".format(message.content.split()[1])) await client.send_message(message.channel, "You need to give me a number, you entered {}".format(message.content.split()[1]))
return return
await client.purge_from(message.channel, limit=num, check=is_me) await client.purge_from(message.channel, limit=num, check=is_me)
# await client.send_message(message.channel, 'Deleted {} message(s)'.format(len(deleted)))
if message.content.startswith('!decide'):
await client.send_message(
message.channel,
"{} {}".format(
message.author.mention,
decide.decide(message.content)
)
)
if message.content.startswith('!cleanup') and message.author.id == '144986109804412928':
def is_bot(m):
return m.author == client.user
await client.purge_from(message.channel, limit=100, check=is_bot)
# await client.send_message(message.channel, 'Deleted {} message(s)'.format(len(deleted)))
if message.content.startswith('!wallpaper'): if message.content.startswith('!wallpaper'):
await client.send_message( await client.send_message(
@ -197,22 +108,6 @@ async def on_message(message):
wallpaper.get_wall(message.content) wallpaper.get_wall(message.content)
) )
###################################
###### +-------------------+ ######
###### | | ######
###### | Lewd Functions | ######
###### | | ######
###### +-------------------+ ######
###################################
if message.content.startswith('!lewd'):
if 'nsfw' in message.channel.name:
if random.randint(0, 100) % 2 == 0:
await client.send_message(message.channel, "Heres a random image from reddit\n{}".format(get_from_reddit()))
else:
await client.send_message(message.channel, "Heres a random image from danbooru\n{}".format(get_from_danbooru()))
else:
await client.send_message(message.channel, 'You can only use this command in NSFW channels')
################################### ###################################
###### +-------------------+ ###### ###### +-------------------+ ######
###### | | ###### ###### | | ######

View File

@ -40,8 +40,6 @@ def get_help_message(method):
'Deletes the last 20 messages you sent from the channel you', 'Deletes the last 20 messages you sent from the channel you',
'typed purge in, unless otherwise specified. eg. !purge 8' 'typed purge in, unless otherwise specified. eg. !purge 8'
], ],
'triggered': [
'REEEEEEEEEEEEEEEEEE'],
'wallpaper': [ 'wallpaper': [
'Returns the URL for a 4k wallpaper. You can enter', 'Returns the URL for a 4k wallpaper. You can enter',
'a search term as well, for example, !wallpaper, or', 'a search term as well, for example, !wallpaper, or',

103
app/lewds.py Normal file
View File

@ -0,0 +1,103 @@
import random
import requests
import help_methods
from pybooru import Danbooru
def get_from_danbooru():
"""
get_from_danbooru()
returns a URL to an image on danbooru that matches a random tag
defined in the tag_list list
"""
booru = Danbooru('danbooru')
tag_list = [
'1girl',
'2girls',
'ass_visible_through_thighs',
'bare_legs'
'bikini',
'black_bikini',
'black_panties',
'blue_eyes',
'bra_pull',
'bra',
'breasts',
'cameltoe',
'clevage',
'condom_in_mouth',
'condom',
'from_below',
'gloves',
'highleg_bikini',
'highleg',
'highres',
'horns',
'large_breasts',
'leash',
'medium_breasts'
'miniskirt',
'nier_automata',
'nier',
'nipples',
'partially_visible_vulva',
'pencil_skirt',
'pussy_juice',
'pussy',
'skirt',
'small_breasts',
'thong_bikini',
'topless',
'wet_clothes',
'wet_panties',
'wet',
]
tag = random.choice(tag_list)
return "https://danbooru.donmai.us{}".format(
random.choice(
booru.post_list(
limit=500,
tags=tag,
random=True,
)
)['large_file_url'])
def get_from_reddit():
"""
get_from_reddit()
returns a URL to an image on reddit from a random board in the boards list
as long as it is hosted on one of the domains in the domains list
"""
boards = [
'2Booty',
'bakunyuu_hentai',
'ecchi',
'hentai',
'rule34',
'WesternHentai',
]
domains = [
'my.mixtape.moe',
'i.imgur.com',
'imgur.com',
'i.redd.it',
]
response = requests.get(
"https://reddit.com/r/{}.json?limit=500".format(random.choice(boards)),
headers = {'User-agent':'discord dragon-bot'}
).json()['data']['children']
image_urls = list(filter(lambda x: x['data']['domain'] in domains, response))
return random.choice(image_urls)['data']['url'].replace('http://', 'https://')
def get_lewd(channel_name):
if 'nsfw' in channel_name:
random.choice([get_from_reddit, get_from_danbooru])()
else:
return 'You can only use this command in NSFW channels'