Make 'some' changes and add Dockerfile
This commit is contained in:
11
.dockerignore
Normal file
11
.dockerignore
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
README.md
|
||||||
|
.git
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
.Python
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
env
|
||||||
|
venv
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -9,3 +9,7 @@ __pycache__/
|
|||||||
# generated data from logging
|
# generated data from logging
|
||||||
logs/
|
logs/
|
||||||
*.log
|
*.log
|
||||||
|
|
||||||
|
# venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
|||||||
15
Dockerfile
Normal file
15
Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM python:3.8
|
||||||
|
|
||||||
|
WORKDIR /data
|
||||||
|
|
||||||
|
COPY . /data
|
||||||
|
|
||||||
|
ENV PREFIX
|
||||||
|
ENV TOKEN
|
||||||
|
ENV REDDIT_CLIENT_ID
|
||||||
|
ENV REDDIT_CLIENT_SECRET
|
||||||
|
ENV REDDIT_CLIENT_USERAGENT
|
||||||
|
|
||||||
|
RUN python3 -m pip install -r requirements.txt
|
||||||
|
|
||||||
|
CMD python3 aquabot.py --prefix=$PREFIX --token=$TOKEN --reddit_client_id=$REDDIT_CLIENT_ID --reddit_client_secret=$REDDIT_CLIENT_SECRET --reddit_client_useragent=$REDDIT_CLIENT_USERAGENT
|
||||||
52
aquabot.py
52
aquabot.py
@@ -21,9 +21,34 @@ from datetime import datetime
|
|||||||
import platform
|
import platform
|
||||||
import random
|
import random
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
|
||||||
# IMPORTS - internal
|
# SET VARS
|
||||||
import loadconfig
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--prefix", help="Command Prefix")
|
||||||
|
parser.add_argument("--token", help="Discord Bot Token")
|
||||||
|
parser.add_argument("--reddit_client_id", help="Reddit Client ID")
|
||||||
|
parser.add_argument("--reddit_client_secret", help="Reddit Client Secret")
|
||||||
|
parser.add_argument("--reddit_client_useragent", help="Reddit Client User-Agent")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.prefix:
|
||||||
|
prefix = args.prefix
|
||||||
|
|
||||||
|
if args.token:
|
||||||
|
token = args.token
|
||||||
|
|
||||||
|
if args.reddit_client_id:
|
||||||
|
reddit_client_id = args.reddit_client_id
|
||||||
|
|
||||||
|
if args.reddit_client_secret:
|
||||||
|
reddit_client_secret = args.reddit_client_secret
|
||||||
|
|
||||||
|
if args.reddit_client_useragent:
|
||||||
|
reddit_client_useragent = args.reddit_client_useragent
|
||||||
|
|
||||||
|
avatar = "https://i.redd.it/0uajctrps9u41.jpg"
|
||||||
|
|
||||||
# LOGGING
|
# LOGGING
|
||||||
logger = logging.getLogger("discord")
|
logger = logging.getLogger("discord")
|
||||||
@@ -39,11 +64,22 @@ logger.addHandler(handler)
|
|||||||
|
|
||||||
# INIT
|
# INIT
|
||||||
bot = commands.Bot(
|
bot = commands.Bot(
|
||||||
command_prefix=loadconfig.__prefix__,
|
command_prefix=prefix,
|
||||||
description="Holy Goddess Aqua!")
|
description="Holy Goddess Aqua!")
|
||||||
|
|
||||||
# LOAD COGS SPECIFIED IN 'config/cogs.py'
|
# LOAD COGS
|
||||||
for cog in loadconfig.__cogs__:
|
cogs = [
|
||||||
|
"cogs.admin",
|
||||||
|
"cogs.anime",
|
||||||
|
"cogs.help",
|
||||||
|
"cogs.meme",
|
||||||
|
"cogs.music",
|
||||||
|
"cogs.reddit",
|
||||||
|
"cogs.utility",
|
||||||
|
"cogs.welcome"
|
||||||
|
]
|
||||||
|
|
||||||
|
for cog in cogs:
|
||||||
try:
|
try:
|
||||||
bot.load_extension(cog)
|
bot.load_extension(cog)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -62,14 +98,14 @@ async def on_ready():
|
|||||||
startup = f"""
|
startup = f"""
|
||||||
Bot Name: {bot.user.name} - {bot.user.id}\n
|
Bot Name: {bot.user.name} - {bot.user.id}\n
|
||||||
Owner: {bot.AppInfo.owner}\n
|
Owner: {bot.AppInfo.owner}\n
|
||||||
Command Prefix: {loadconfig.__prefix__}\n
|
Command Prefix: {prefix}\n
|
||||||
discord.py Version: {discord.__version__}\n
|
discord.py Version: {discord.__version__}\n
|
||||||
python Version: {platform.python_version()}\n
|
python Version: {platform.python_version()}\n
|
||||||
OS: {platform.system()} {platform.release()} {platform.version()}\n
|
OS: {platform.system()} {platform.release()} {platform.version()}\n
|
||||||
"""
|
"""
|
||||||
print(startup)
|
print(startup)
|
||||||
|
|
||||||
name = f"with water | {loadconfig.__prefix__}aquabot"
|
name = f"with water | {prefix}aquabot"
|
||||||
activity = discord.Activity(name=name, type=discord.ActivityType.playing)
|
activity = discord.Activity(name=name, type=discord.ActivityType.playing)
|
||||||
await bot.change_presence(activity=activity)
|
await bot.change_presence(activity=activity)
|
||||||
|
|
||||||
@@ -77,6 +113,6 @@ async def on_ready():
|
|||||||
|
|
||||||
# START BOT
|
# START BOT
|
||||||
bot.run(
|
bot.run(
|
||||||
loadconfig.__token__,
|
token,
|
||||||
bot=True,
|
bot=True,
|
||||||
reconnect=True)
|
reconnect=True)
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Admin commands, that can be used from within the chat:
|
Admin commands, that can be used from within the discord-client-chat
|
||||||
- load
|
|
||||||
- unload
|
|
||||||
- reload
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
https://gist.github.com/EvieePy/d78c061a4798ae81be9825468fe146be
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Some anime-related commands:
|
Some anime-related commands
|
||||||
- animepic
|
|
||||||
- waifupic
|
|
||||||
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS - external
|
# IMPORTS - external
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
This framework can be used to create new Cogs, remember to add them in the config
|
This framework can be used to create new Cogs, remember to add them in the config
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
"""
|
|
||||||
Some general commands:
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
|
||||||
|
|
||||||
# IMPORTS - external
|
|
||||||
import discord
|
|
||||||
from discord.ext import commands
|
|
||||||
import platform
|
|
||||||
|
|
||||||
# IMPORTS - internal
|
|
||||||
import loadconfig
|
|
||||||
|
|
||||||
# COG INIT
|
|
||||||
class General(commands.Cog):
|
|
||||||
def __init__(self, bot):
|
|
||||||
self.bot = bot
|
|
||||||
|
|
||||||
# COG BODY
|
|
||||||
|
|
||||||
|
|
||||||
# COG ENDING
|
|
||||||
def setup(bot):
|
|
||||||
bot.add_cog(General(bot))
|
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Some help for the users:
|
Some help for the users
|
||||||
- aquabot
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS - external
|
# IMPORTS - external
|
||||||
@@ -10,7 +7,7 @@ import discord
|
|||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|
||||||
# IMPORTS - internal
|
# IMPORTS - internal
|
||||||
import loadconfig
|
from __main__ import prefix
|
||||||
|
|
||||||
# COG INIT
|
# COG INIT
|
||||||
class Help(commands.Cog):
|
class Help(commands.Cog):
|
||||||
@@ -27,7 +24,7 @@ class Help(commands.Cog):
|
|||||||
embed.set_thumbnail(url=ctx.me.avatar_url)
|
embed.set_thumbnail(url=ctx.me.avatar_url)
|
||||||
|
|
||||||
embed.add_field(name="Owner", value=self.bot.AppInfo.owner, inline=True)
|
embed.add_field(name="Owner", value=self.bot.AppInfo.owner, inline=True)
|
||||||
embed.add_field(name="Command Prefix", value=loadconfig.__prefix__, inline=True)
|
embed.add_field(name="Command Prefix", value=prefix, inline=True)
|
||||||
embed.add_field(name="Source Code", value="[GitHub](https://github.com/crammk/aquabot)", inline=True)
|
embed.add_field(name="Source Code", value="[GitHub](https://github.com/crammk/aquabot)", inline=True)
|
||||||
|
|
||||||
footer_text = "This Bot is a project by MarcMK."
|
footer_text = "This Bot is a project by MarcMK."
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Send spicy memes to chat
|
Send spicy memes to chat
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS - external
|
# IMPORTS - external
|
||||||
@@ -12,9 +10,6 @@ import random
|
|||||||
# IMPORTS - internal
|
# IMPORTS - internal
|
||||||
import loaddata
|
import loaddata
|
||||||
|
|
||||||
class MemeError(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
# COG INIT
|
# COG INIT
|
||||||
class Meme(commands.Cog):
|
class Meme(commands.Cog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
Play Music
|
Play Music
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
A COG NOT WRITTEN BY ME! ALTERED FROM THIS ONE:
|
||||||
https://gist.github.com/vbe0201/ade9b80f2d3b64643d854938d40a0a2d
|
https://gist.github.com/vbe0201/ade9b80f2d3b64643d854938d40a0a2d
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
41
cogs/reddit.py
Normal file
41
cogs/reddit.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
"""
|
||||||
|
Fetch pictures from subreddits
|
||||||
|
"""
|
||||||
|
|
||||||
|
# IMPORTS - external
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
import random
|
||||||
|
import praw
|
||||||
|
|
||||||
|
# IMPORTS - internal
|
||||||
|
from __main__ import reddit_client_id
|
||||||
|
from __main__ import reddit_client_secret
|
||||||
|
from __main__ import reddit_client_useragent
|
||||||
|
|
||||||
|
# COG INIT
|
||||||
|
class Reddit(commands.Cog):
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
|
||||||
|
# COG BODY
|
||||||
|
@commands.command(name="reddit")
|
||||||
|
async def reddit(self, ctx, sub: str):
|
||||||
|
"""
|
||||||
|
Send a post from a subreddit to chat
|
||||||
|
"""
|
||||||
|
reddit = praw.Reddit(client_id=reddit_client_id,
|
||||||
|
client_secret=reddit_client_secret,
|
||||||
|
user_agent=reddit_client_useragent)
|
||||||
|
|
||||||
|
posts = reddit.subreddit(sub).hot()
|
||||||
|
rand_post = random.randint(1, 100)
|
||||||
|
# Make sure you're not sending a pinned post
|
||||||
|
for i in range(0, rand_post):
|
||||||
|
selected_post = next(x for x in posts if not x.stickied)
|
||||||
|
|
||||||
|
await ctx.send(selected_post.url)
|
||||||
|
|
||||||
|
# COG ENDING
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(Reddit(bot))
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
A simple reminder option
|
A simple reminder option
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
Some (more or less) handy utility:
|
Some (more or less) handy utility
|
||||||
- invitelink
|
|
||||||
- pat
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# IMPORTS - external
|
# IMPORTS - external
|
||||||
@@ -12,7 +8,7 @@ from discord.ext import commands
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
# IMPORTS - internal
|
# IMPORTS - internal
|
||||||
import loadconfig
|
from __main__ import avatar
|
||||||
|
|
||||||
# COG INIT
|
# COG INIT
|
||||||
class Utility(commands.Cog):
|
class Utility(commands.Cog):
|
||||||
@@ -43,7 +39,7 @@ class Utility(commands.Cog):
|
|||||||
inline=True)
|
inline=True)
|
||||||
link_embed.set_footer(
|
link_embed.set_footer(
|
||||||
text=f"Age: {age}, Uses: {uses}",
|
text=f"Age: {age}, Uses: {uses}",
|
||||||
icon_url=loadconfig.__avatar__
|
icon_url=avatar
|
||||||
)
|
)
|
||||||
|
|
||||||
await ctx.send(embed=link_embed)
|
await ctx.send(embed=link_embed)
|
||||||
@@ -58,8 +54,6 @@ class Utility(commands.Cog):
|
|||||||
author = ctx.message.author
|
author = ctx.message.author
|
||||||
if target is None:
|
if target is None:
|
||||||
response = "No one to pat..."
|
response = "No one to pat..."
|
||||||
elif target.capitalize() == "Noel":
|
|
||||||
response = "NNN-GYAAAA!"
|
|
||||||
else:
|
else:
|
||||||
response = f"{target} got pat by {author.mention}"
|
response = f"{target} got pat by {author.mention}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
Welcoming new users etc.:
|
Welcoming new users etc.
|
||||||
- listener: join
|
|
||||||
- hello
|
|
||||||
|
|
||||||
https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
# IMPORTS
|
# IMPORTS
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
"""
|
|
||||||
Initally loaded cogs
|
|
||||||
Don't remove the "admin" cog or you won't be able to load cogs
|
|
||||||
from the Discord-Client
|
|
||||||
"""
|
|
||||||
|
|
||||||
__cogs__ = [
|
|
||||||
"cogs.admin",
|
|
||||||
"cogs.anime",
|
|
||||||
"cogs.general",
|
|
||||||
"cogs.help",
|
|
||||||
"cogs.meme",
|
|
||||||
"cogs.music",
|
|
||||||
"cogs.utility",
|
|
||||||
"cogs.welcome",
|
|
||||||
]
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
token: ''
|
|
||||||
prefix: ''
|
|
||||||
|
|
||||||
...
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
"""
|
|
||||||
Media, which can be accessed from the bot.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Internal lists
|
|
||||||
gifs_anime = []
|
|
||||||
|
|
||||||
pics_anime = [
|
|
||||||
"https://i.imgur.com/4xnJN9x.png",
|
|
||||||
]
|
|
||||||
|
|
||||||
aqua = []
|
|
||||||
|
|
||||||
noel = [
|
|
||||||
"https://i.imgur.com/qSAjVSL.png",
|
|
||||||
]
|
|
||||||
|
|
||||||
megumin = [
|
|
||||||
"https://i.imgur.com/mSBfcXA.jpg",
|
|
||||||
"https://i.imgur.com/Dqua2lX.jpg",
|
|
||||||
"https://i.imgur.com/1jzaE3y.png",
|
|
||||||
"https://i.imgur.com/KpGSYD2.png",
|
|
||||||
]
|
|
||||||
|
|
||||||
akeno = []
|
|
||||||
|
|
||||||
rem = [
|
|
||||||
"https://i.imgur.com/8HNv6ow.jpg",
|
|
||||||
"https://i.imgur.com/GEhYHKi.png",
|
|
||||||
"https://i.imgur.com/5dtXgEc.jpg",
|
|
||||||
"https://i.imgur.com/MV3ancf.png",
|
|
||||||
"https://i.imgur.com/yJCw8MX.jpg",
|
|
||||||
"https://i.imgur.com/jEGpRn2.jpg",
|
|
||||||
"https://i.imgur.com/y0DP3wL.jpg",
|
|
||||||
"https://i.imgur.com/cVNMUgi.jpg",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# Exports
|
|
||||||
__media_anime__ = [gifs_anime, pics_anime]
|
|
||||||
|
|
||||||
__media_girl__ = {
|
|
||||||
"Aqua": aqua,
|
|
||||||
"Noel": noel,
|
|
||||||
"Megumin": megumin,
|
|
||||||
"Akeno": akeno,
|
|
||||||
"Rem": rem
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
"""
|
|
||||||
Gather all config data into one file,
|
|
||||||
so all other files can call it from here
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# IMPORTS
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
__avatar__ = "https://i.redd.it/0uajctrps9u41.jpg"
|
|
||||||
|
|
||||||
# Import from yaml
|
|
||||||
try:
|
|
||||||
with open("config/config.yml") as file:
|
|
||||||
config = yaml.safe_load(file)
|
|
||||||
|
|
||||||
__token__ = config['token']
|
|
||||||
__prefix__ = config['prefix']
|
|
||||||
|
|
||||||
except yaml.YAMLError as error:
|
|
||||||
print(f"Error while parsing: {error}")
|
|
||||||
except FileNotFoundError as error:
|
|
||||||
print(f"Error, please create a config file: {error}")
|
|
||||||
|
|
||||||
# Load cogs activated from the start
|
|
||||||
try:
|
|
||||||
from config.cogs import __cogs__
|
|
||||||
except ImportError as error:
|
|
||||||
print(f"Error while importing: {error}")
|
|
||||||
@@ -5,7 +5,6 @@ so all other files can call it from here
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from data.media import __media_anime__, __media_girl__
|
from memes import __memes_list__
|
||||||
from data.memes import __memes_list__
|
|
||||||
except ImportError as error:
|
except ImportError as error:
|
||||||
print(f"Error while importing: {error}")
|
print(f"Error while importing: {error}")
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
discord.py[voice]
|
discord.py[voice]
|
||||||
youtube-dl
|
youtube-dl
|
||||||
pyyaml
|
pyyaml
|
||||||
|
praw
|
||||||
|
argparse
|
||||||
|
|||||||
Reference in New Issue
Block a user