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

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

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

+ 67
- 62
cogs/Twitch.py View File

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

+ 2
- 2
cogs/Utils.py View File

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

+ 1
- 1
cogs/__init__.py View File

cogs = [ cogs = [
'cogs.Admin', 'cogs.Admin',
'cogs.Settings'
'cogs.Settings',
'cogs.Twitch', 'cogs.Twitch',
'cogs.selfAssign', 'cogs.selfAssign',
'cogs.Fun', 'cogs.Fun',

+ 1
- 1
config/config.json View File

{"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





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

Loading…
Cancel
Save