@@ -0,0 +1,36 @@ | |||
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)) |
@@ -15,7 +15,7 @@ from discord.ext.commands import group | |||
def owner(ctx): | |||
return owner_id == ctx.message.author.id | |||
# TODO: Clean the fuck up | |||
class Settings(): | |||
def __init__(self, Bot): | |||
self.bot = Bot | |||
@@ -144,7 +144,7 @@ class Settings(): | |||
return await self.bot.say("{} has been set as the twitch shilling channel!".format(channel.mention)) | |||
@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): | |||
return await self.bot.reply(self.con.no_perms_reponse, delete_after=self.con.delete_after) | |||
else: | |||
@@ -153,6 +153,26 @@ class Settings(): | |||
self.con.updateconfig(self.serverconfig) | |||
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"]) | |||
async def changeavatar(self, ctx, url=None): | |||
""" |
@@ -1,81 +1,86 @@ | |||
from discord.ext.commands import bot | |||
import discord | |||
from main import blacklisted | |||
from cogs.Admin import owner | |||
from cogs.Settings import owner | |||
from config.config import Config | |||
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): | |||
bot.add_cog(Twitch(bot)) | |||
bot.add_cog(Twitch(bot)) |
@@ -75,8 +75,8 @@ class Util(): | |||
msg = "I'm here to remind you of something. Idk what, but you told me to do this {} minutes ago ¯\_(ツ)_/¯".format(str(minutes)) | |||
else: | |||
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) | |||
def setup(Bot): |
@@ -1,6 +1,6 @@ | |||
cogs = [ | |||
'cogs.Admin', | |||
'cogs.Settings' | |||
'cogs.Settings', | |||
'cogs.Twitch', | |||
'cogs.selfAssign', | |||
'cogs.Fun', |
@@ -1 +1 @@ | |||
{"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": []}}}} | |||
{} |
@@ -2,77 +2,81 @@ import json | |||
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): | |||
bot.add_cog(Config(bot)) | |||
bot.add_cog(Config(bot)) |