Browse Source

0.4 fucking done woo!

tags/v0.4.0
roxie 6 years ago
parent
commit
403049f896
7 changed files with 199 additions and 134 deletions
  1. +36
    -0
      cogs/Admin.py
  2. +22
    -2
      cogs/Settings.py
  3. +67
    -62
      cogs/Twitch.py
  4. +2
    -2
      cogs/Utils.py
  5. +1
    -1
      cogs/__init__.py
  6. +1
    -1
      config/config.json
  7. +70
    -66
      config/config.py

+ 36
- 0
cogs/Admin.py View File

@@ -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))

+ 22
- 2
cogs/Settings.py View File

@@ -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):
"""

+ 67
- 62
cogs/Twitch.py View File

@@ -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))

+ 2
- 2
cogs/Utils.py View File

@@ -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
- 1
cogs/__init__.py View File

@@ -1,6 +1,6 @@
cogs = [
'cogs.Admin',
'cogs.Settings'
'cogs.Settings',
'cogs.Twitch',
'cogs.selfAssign',
'cogs.Fun',

+ 1
- 1
config/config.json View File

@@ -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": []}}}}
{}

+ 70
- 66
config/config.py View File

@@ -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))

Loading…
Cancel
Save