import discord | |||||
from discord.ext.commands import bot | |||||
from asyncio import sleep | |||||
from config.config import Config | |||||
class Admin(): | |||||
def __init__(self, Bot): | |||||
self.bot = Bot | |||||
self.con = Config(Bot) | |||||
self.serverconfig = self.con.serverconfig | |||||
@bot.command(pass_context=True, enabled=False) | |||||
async def mute(self, ctx, minutes: int, user: discord.User = None): | |||||
admins = self.serverconfig[ctx.message.server.id]["mute"]["admin-role"] | |||||
muterole = self.serverconfig[ctx.message.server.id]["mute"]["role"] | |||||
for roles in ctx.message.author.roles: | |||||
if not roles.id in admins: | |||||
return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | |||||
seconds = minutes #* 60 | |||||
await self.bot.add_roles(user, muterole) | |||||
await self.bot.send_message(user, | |||||
content="You have been muted on {} for {} minutes. This means you have been given a role that blocks you from talking in more/all channels. If you have an issue please contact an admin.".format( | |||||
ctx.message.server.name, minutes)) | |||||
await self.bot.say("{} has been muted for {} minutes.".format(user.mention, minutes)) | |||||
await sleep(seconds) | |||||
await self.bot.remove_roles(user, muterole) | |||||
return await self.bot.say("{} has been unmuted.".format(user.mention)) | |||||
def setup(Bot): | |||||
Bot.add_cog(Admin(Bot)) |
def owner(ctx): | def owner(ctx): | ||||
return owner_id == ctx.message.author.id | return owner_id == ctx.message.author.id | ||||
# TODO: Clean the fuck up | |||||
class Settings(): | class Settings(): | ||||
def __init__(self, Bot): | def __init__(self, Bot): | ||||
self.bot = Bot | self.bot = Bot | ||||
return await self.bot.say("{} has been set as the twitch shilling channel!".format(channel.mention)) | return await self.bot.say("{} has been set as the twitch shilling channel!".format(channel.mention)) | ||||
@set.command(pass_context=True, hidden=True) | @set.command(pass_context=True, hidden=True) | ||||
async def mwelcomemessage(self, ctx, *, message: str): | |||||
async def welcomemessage(self, ctx, *, message: str): | |||||
if not owner(ctx): | if not owner(ctx): | ||||
return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | ||||
else: | else: | ||||
self.con.updateconfig(self.serverconfig) | self.con.updateconfig(self.serverconfig) | ||||
return await self.bot.say("Custom message set to '{}'".format(message)) | return await self.bot.say("Custom message set to '{}'".format(message)) | ||||
@set.command(pass_context=True, hidden=True) | |||||
async def muterole(self, ctx, role: discord.Role = None): | |||||
if not owner(ctx): | |||||
return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | |||||
else: | |||||
self.serverconfig = self.con.load_config() | |||||
self.serverconfig[ctx.message.server.id]["mute"]["role"] = role.id | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.say("Muted role set to '{}'".format(role.name)) | |||||
@set.command(pass_context=True, hidden=True) | |||||
async def muteadmin(self, ctx, role: discord.Role = None): | |||||
if not owner(ctx): | |||||
return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | |||||
else: | |||||
self.serverconfig = self.con.load_config() | |||||
self.serverconfig[ctx.message.server.id]["mute"]["admin-role"].append(role.id) | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.say("Admin role appended to list: '{}'".format(role.name)) | |||||
@bot.command(pass_context=True, hidden=True, aliases=["setava"]) | @bot.command(pass_context=True, hidden=True, aliases=["setava"]) | ||||
async def changeavatar(self, ctx, url=None): | async def changeavatar(self, ctx, url=None): | ||||
""" | """ |
from discord.ext.commands import bot | from discord.ext.commands import bot | ||||
import discord | import discord | ||||
from main import blacklisted | from main import blacklisted | ||||
from cogs.Admin import owner | |||||
from cogs.Settings import owner | |||||
from config.config import Config | from config.config import Config | ||||
class Twitch(): | class Twitch(): | ||||
def __init__(self, bot): | |||||
self.bot = bot | |||||
self.con = Config(bot) | |||||
self.serverconfig = self.con.serverconfig | |||||
def __init__(self, bot): | |||||
self.bot = bot | |||||
self.con = Config(bot) | |||||
self.serverconfig = self.con.serverconfig | |||||
async def on_member_update(self, member_b, member_a): | |||||
# Twitch Shilling Part | |||||
if blacklisted(member_b): | |||||
return | |||||
if member_a.game: | |||||
if member_a.game.type and not member_b.game.type: | |||||
ts_enabled = self.serverconfig[member_a.server.id]["twitch"]["enabled"] | |||||
ts_whitelist = self.serverconfig[member_a.server.id]["twitch"]["whitelist"]["enabled"] | |||||
if ts_enabled: | |||||
if not ts_whitelist or member_a.id in \ | |||||
self.serverconfig[member_a.server.id]["twitch"]["whitelist"]["list"]: | |||||
channel = discord.Object(self.serverconfig[member_a.server.id]["twitch"]["twitch-channel"]) | |||||
return await self.bot.send_message(channel, | |||||
content=":video_game:** {} is live!** :video_game:\n{}\n{}".format( | |||||
member_a.name, member_a.game.name, member_a.game.url)) | |||||
async def on_member_update(self, member_b, member_a): | |||||
# Twitch Shilling Part | |||||
if blacklisted(member_b): | |||||
return | |||||
# Check to see if member_before game exists. Avoids crashes at line 24 | |||||
if member_b.game: | |||||
typeb = member_b.game.type | |||||
else: | |||||
typeb = False | |||||
if member_a.game: | |||||
if member_a.game.type and not typeb: # Hopefully this fucking fixes it | |||||
ts_enabled = self.serverconfig[member_a.server.id]["twitch"]["enabled"] | |||||
ts_whitelist = self.serverconfig[member_a.server.id]["twitch"]["whitelist"]["enabled"] | |||||
if ts_enabled: | |||||
if not ts_whitelist or member_a.id in \ | |||||
self.serverconfig[member_a.server.id]["twitch"]["whitelist"]["list"]: | |||||
channel = discord.Object(self.serverconfig[member_a.server.id]["twitch"]["twitch-channel"]) | |||||
return await self.bot.send_message(channel, | |||||
content=":video_game:** {} is live!** :video_game:\n{}\n{}".format( | |||||
member_a.name, member_a.game.name, member_a.game.url)) | |||||
@bot.command(pass_context=True, hidden=True) | |||||
async def ts_enablewhitelist(self, ctx): | |||||
if not owner(ctx): | |||||
return await self.bot.reply("You do not have permission to do this command.", delete_after=20) | |||||
else: | |||||
self.serverconfig = self.con.load_config() | |||||
if not self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"]: | |||||
self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 1 | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.reply("Whitelist for Twitch shilling has been enabled.") | |||||
else: | |||||
self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 0 | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.reply("Whitelist for Twitch shilling has been disabled.") | |||||
@bot.command(pass_context=True, hidden=True) | |||||
async def ts_enablewhitelist(self, ctx): | |||||
if not owner(ctx): | |||||
return await self.bot.reply("You do not have permission to do this command.", delete_after=20) | |||||
else: | |||||
self.serverconfig = self.con.load_config() | |||||
if not self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"]: | |||||
self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 1 | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.reply("Whitelist for Twitch shilling has been enabled.") | |||||
else: | |||||
self.serverconfig[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 0 | |||||
self.con.updateconfig(self.serverconfig) | |||||
return await self.bot.reply("Whitelist for Twitch shilling has been disabled.") | |||||
@bot.command(pass_context=True, hidden=True) | |||||
async def ts_whitelist(self, ctx, option, *mentions): | |||||
if not owner(ctx): | |||||
return await self.bot.reply("You do not have permission to do this command.", delete_after=20) | |||||
@bot.command(pass_context=True, hidden=True) | |||||
async def ts_whitelist(self, ctx, option, *mentions): | |||||
if not owner(ctx): | |||||
return await self.bot.reply("You do not have permission to do this command.", delete_after=20) | |||||
whitelist_count = 0 | |||||
whitelist_count = 0 | |||||
if not ctx.message.mentions and option != 'list': | |||||
return await self.bot.reply("You haven't mentioned anyone to whitelist.") | |||||
if not ctx.message.mentions and option != 'list': | |||||
return await self.bot.reply("You haven't mentioned anyone to whitelist.") | |||||
if option not in ['+', '-', 'add', 'remove', 'list']: | |||||
return await self.bot.say('Invalid option "%s" specified, use +, -, add, or remove' % option, expire_in=20) | |||||
if option not in ['+', '-', 'add', 'remove', 'list']: | |||||
return await self.bot.say('Invalid option "%s" specified, use +, -, add, or remove' % option, expire_in=20) | |||||
if option in ['+', 'add']: | |||||
self.serverconfig = self.con.load_config() | |||||
for user in ctx.message.mentions: | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"].append(user.id) | |||||
self.con.updateconfig(self.serverconfig) | |||||
whitelist_count += 1 | |||||
return await self.bot.say('{} user(s) have been added to the whitelist'.format(whitelist_count)) | |||||
if option in ['+', 'add']: | |||||
self.serverconfig = self.con.load_config() | |||||
for user in ctx.message.mentions: | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"].append(user.id) | |||||
self.con.updateconfig(self.serverconfig) | |||||
whitelist_count += 1 | |||||
return await self.bot.say('{} user(s) have been added to the whitelist'.format(whitelist_count)) | |||||
elif option in ['-', 'remove']: | |||||
self.serverconfig = self.con.load_config() | |||||
for user in ctx.message.mentions: | |||||
if user.id in self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"]: | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"].remove(user.id) | |||||
self.con.updateconfig(self.serverconfig) | |||||
whitelist_count += 1 | |||||
return await self.bot.say('{} user(s) have been removed to the whitelist'.format(whitelist_count)) | |||||
elif option in ['-', 'remove']: | |||||
self.serverconfig = self.con.load_config() | |||||
for user in ctx.message.mentions: | |||||
if user.id in self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"]: | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"].remove(user.id) | |||||
self.con.updateconfig(self.serverconfig) | |||||
whitelist_count += 1 | |||||
return await self.bot.say('{} user(s) have been removed to the whitelist'.format(whitelist_count)) | |||||
elif option == 'list': | |||||
return await self.bot.say( | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"]) | |||||
elif option == 'list': | |||||
return await self.bot.say( | |||||
self.serverconfig[ctx.message.server.id]["twitch"]["whitelist"]["list"]) | |||||
def setup(bot): | def setup(bot): | ||||
bot.add_cog(Twitch(bot)) | |||||
bot.add_cog(Twitch(bot)) |
msg = "I'm here to remind you of something. Idk what, but you told me to do this {} minutes ago ¯\_(ツ)_/¯".format(str(minutes)) | msg = "I'm here to remind you of something. Idk what, but you told me to do this {} minutes ago ¯\_(ツ)_/¯".format(str(minutes)) | ||||
else: | else: | ||||
msg = "I was told to remind you this: **'{}'** {} minutes ago.".format(" ".join(kwargs),str(minutes)) | msg = "I was told to remind you this: **'{}'** {} minutes ago.".format(" ".join(kwargs),str(minutes)) | ||||
#secs = minutes * 60 | |||||
await sleep(minutes) | |||||
secs = minutes * 60 | |||||
await sleep(secs) | |||||
return await self.bot.reply(msg) | return await self.bot.reply(msg) | ||||
def setup(Bot): | def setup(Bot): |
cogs = [ | cogs = [ | ||||
'cogs.Admin', | 'cogs.Admin', | ||||
'cogs.Settings' | |||||
'cogs.Settings', | |||||
'cogs.Twitch', | 'cogs.Twitch', | ||||
'cogs.selfAssign', | 'cogs.selfAssign', | ||||
'cogs.Fun', | 'cogs.Fun', |
{"175285455204384768": {"greets": {"enabled": 0, "welcome-channel": "", "member-role": "", "custom-message": "", "default-message:": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "selfAssign": {"enabled": 0, "roles": []}, "twitch": {"enabled": 0, "twitch-channel": "", "whitelist": {"enabled": 0, "list": []}}}, "304048071963312130": {"greets": {"enabled": 1, "welcome-channel": "304048071963312130", "member-role": "", "custom-message": "", "default-message": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "selfAssign": {"enabled": 1, "roles": ["307330606348632064", "308082456743903233", "308083509866659850"]}, "twitch": {"enabled": 1, "twitch-channel": "339201847678074880", "whitelist": {"enabled": 0, "list": []}}}, "325593726384734210": {"greets": {"enabled": 0, "welcome-channel": "", "member-role": "", "custom-message": "", "default-message:": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "selfAssign": {"enabled": 0, "roles": []}, "twitch": {"enabled": 0, "twitch-channel": "", "whitelist": {"enabled": 0, "list": []}}}} | |||||
{} |
class Config(): | class Config(): | ||||
def __init__(self, bot): | |||||
# TODO: Move default message into settings.ini | |||||
self.serverconfig_template = { | |||||
"example": { | |||||
"greets": { | |||||
"enabled": 0, | |||||
"welcome-channel": "", | |||||
"member-role": "", | |||||
"custom-message": "", | |||||
"default-message": "Be sure to read the rules." | |||||
}, | |||||
"goodbyes": { | |||||
"enabled": 0, | |||||
"goodbye-channel": "", | |||||
}, | |||||
"selfAssign": { | |||||
"enabled": 0, | |||||
"roles": [] | |||||
}, | |||||
"twitch": { | |||||
"enabled": 0, | |||||
"twitch-channel": "", | |||||
"whitelist": { | |||||
"enabled": 0, | |||||
"list": [] | |||||
} | |||||
} | |||||
} | |||||
} | |||||
self.serverconfig = self.load_config() | |||||
self.bot = bot | |||||
self.no_perms_reponse = ":no_entry_sign: You do not have permission to use this command." | |||||
self.delete_after = 20 | |||||
def __init__(self, bot): | |||||
# TODO: Move default message into settings.ini | |||||
self.serverconfig_template = { | |||||
"example": { | |||||
"greets": { | |||||
"enabled": 0, | |||||
"welcome-channel": "", | |||||
"member-role": "", | |||||
"custom-message": "", | |||||
"default-message": "Be sure to read the rules." | |||||
}, | |||||
"goodbyes": { | |||||
"enabled": 0, | |||||
"goodbye-channel": "", | |||||
}, | |||||
"selfAssign": { | |||||
"enabled": 0, | |||||
"roles": [] | |||||
}, | |||||
"twitch": { | |||||
"enabled": 0, | |||||
"twitch-channel": "", | |||||
"whitelist": { | |||||
"enabled": 0, | |||||
"list": [] | |||||
}, | |||||
}, | |||||
"mute": { | |||||
"role": "", | |||||
"admin-role": [] | |||||
} | |||||
} | |||||
} | |||||
self.serverconfig = self.load_config() | |||||
self.bot = bot | |||||
self.no_perms_reponse = ":no_entry_sign: You do not have permission to use this command." | |||||
self.delete_after = 20 | |||||
async def on_server_join(self, server): | |||||
self.serverconfig[server.id] = self.serverconfig_template["example"] | |||||
self.updateconfig(self.serverconfig) | |||||
async def on_server_join(self, server): | |||||
self.serverconfig[server.id] = self.serverconfig_template["example"] | |||||
self.updateconfig(self.serverconfig) | |||||
async def on_server_remove(self, server): | |||||
self.serverconfig.pop(server.id) | |||||
self.updateconfig(self.serverconfig) | |||||
async def on_server_remove(self, server): | |||||
self.serverconfig.pop(server.id) | |||||
self.updateconfig(self.serverconfig) | |||||
def load_config(self): | |||||
with open('config/config.json', 'r') as config_file: | |||||
return json.load(config_file) | |||||
def load_config(self): | |||||
with open('config/config.json', 'r') as config_file: | |||||
return json.load(config_file) | |||||
def updateconfig(self, config): | |||||
with open('config/config.json', 'w') as conf_file: | |||||
json.dump(config, conf_file) | |||||
def updateconfig(self, config): | |||||
with open('config/config.json', 'w') as conf_file: | |||||
json.dump(config, conf_file) | |||||
def config_errorcheck(self): | |||||
# TODO: Fix so that it checks for problems in children of module settings. i.e children of 'greets' | |||||
# TODO: Fix issue where a setting can be enabled when it has no channel to post to. | |||||
for server in self.bot.servers: | |||||
if server.id not in self.serverconfig: | |||||
self.serverconfig[server.id] = self.serverconfig_template["example"] | |||||
self.updateconfig(self.serverconfig) | |||||
print( | |||||
"WARNING: The config file for {} was not found. A template has been loaded and saved. All modules are turned off by default.".format( | |||||
server.name.upper())) | |||||
else: | |||||
for module_setting in self.serverconfig_template["example"]: | |||||
if module_setting not in self.serverconfig[server.id]: | |||||
self.serverconfig[server.id][module_setting] = self.serverconfig_template["example"][ | |||||
module_setting] | |||||
self.updateconfig(self.serverconfig) | |||||
print( | |||||
"WARNING: The config file for {} was missing the {} module. This has been fixed with the template version. It is disabled by default.".format( | |||||
server.name.upper(), module_setting.upper())) | |||||
print("") | |||||
def config_errorcheck(self): | |||||
# TODO: Fix so that it checks for problems in children of module settings. i.e children of 'greets' | |||||
# TODO: Fix issue where a setting can be enabled when it has no channel to post to. | |||||
for server in self.bot.servers: | |||||
if server.id not in self.serverconfig: | |||||
self.serverconfig[server.id] = self.serverconfig_template["example"] | |||||
self.updateconfig(self.serverconfig) | |||||
print( | |||||
"WARNING: The config file for {} was not found. A template has been loaded and saved. All modules are turned off by default.".format( | |||||
server.name.upper())) | |||||
else: | |||||
for module_setting in self.serverconfig_template["example"]: | |||||
if module_setting not in self.serverconfig[server.id]: | |||||
self.serverconfig[server.id][module_setting] = self.serverconfig_template["example"][ | |||||
module_setting] | |||||
self.updateconfig(self.serverconfig) | |||||
print( | |||||
"WARNING: The config file for {} was missing the {} module. This has been fixed with the template version. It is disabled by default.".format( | |||||
server.name.upper(), module_setting.upper())) | |||||
print("") | |||||
def setup(bot): | def setup(bot): | ||||
bot.add_cog(Config(bot)) | |||||
bot.add_cog(Config(bot)) |