1
0
Fork 0
mirror of synced 2024-06-02 18:54:33 +12:00

Used commands.has_permissions for a couple of my old predicates

This commit is contained in:
phxntxm 2016-07-12 09:17:47 -05:00
parent 9a516b0628
commit d8ca2de783
7 changed files with 58 additions and 73 deletions

View file

@ -1,5 +1,4 @@
from discord.ext import commands from discord.ext import commands
from .utils import checks
from .utils import config from .utils import config
from threading import Timer from threading import Timer
import discord import discord

View file

@ -16,7 +16,7 @@ class Mod:
await self.bot.say('Invalid subcommand passed: {0.subcommand_passed}'.format(ctx)) await self.bot.say('Invalid subcommand passed: {0.subcommand_passed}'.format(ctx))
@nsfw.command(name="add", pass_context=True) @nsfw.command(name="add", pass_context=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def nsfw_add(self, ctx): async def nsfw_add(self, ctx):
"""Registers this channel as a 'nsfw' channel""" """Registers this channel as a 'nsfw' channel"""
cursor = config.getCursor() cursor = config.getCursor()
@ -31,7 +31,7 @@ class Mod:
await self.bot.say("This channel has just been registered as 'nsfw'! Have fun you naughties ;)") await self.bot.say("This channel has just been registered as 'nsfw'! Have fun you naughties ;)")
@nsfw.command(name="remove", aliases=["delete"], pass_context=True) @nsfw.command(name="remove", aliases=["delete"], pass_context=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def nsfw_remove(self, ctx): async def nsfw_remove(self, ctx):
"""Removes this channel as a 'nsfw' channel""" """Removes this channel as a 'nsfw' channel"""
cursor = config.getCursor() cursor = config.getCursor()
@ -47,62 +47,19 @@ class Mod:
await self.bot.say("This channel has just been unregistered as a nsfw channel") await self.bot.say("This channel has just been unregistered as a nsfw channel")
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isAdmin() @commands.has_permissions(manage_server=True)
async def leave(self, ctx): async def leave(self, ctx):
"""Forces the bot to leave the server""" """Forces the bot to leave the server"""
await self.bot.say('Why must I leave? Hopefully I can come back :c') await self.bot.say('Why must I leave? Hopefully I can come back :c')
await self.bot.leave_server(ctx.message.server) await self.bot.leave_server(ctx.message.server)
@commands.command(pass_context=True) @commands.command(pass_context=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def say(self, ctx, *msg: str): async def say(self, ctx, *msg: str):
"""Tells the bot to repeat what you say""" """Tells the bot to repeat what you say"""
msg = ' '.join(msg) msg = ' '.join(msg)
await self.bot.say(msg) await self.bot.say(msg)
await self.bot.delete_message(ctx.message) await self.bot.delete_message(ctx.message)
@commands.command()
@checks.isAdmin()
async def load(self, *, module : str):
"""Loads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.load_extension(module)
await self.bot.say("I have just loaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
@commands.command()
@checks.isAdmin()
async def unload(self, *, module : str):
"""Unloads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.unload_extension(module)
await self.bot.say("I have just unloaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
@commands.command()
@checks.isAdmin()
async def reload(self, *, module : str):
"""Reloads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.unload_extension(module)
self.bot.load_extension(module)
await self.bot.say("I have just reloaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
def setup(bot): def setup(bot):

View file

@ -82,6 +82,49 @@ class Owner:
await self.bot.change_status(game) await self.bot.change_status(game)
await self.bot.say("Just changed my status to '{0}'!".format(newStatus)) await self.bot.say("Just changed my status to '{0}'!".format(newStatus))
@commands.command()
@checks.isOwner()
async def load(self, *, module: str):
"""Loads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.load_extension(module)
await self.bot.say("I have just loaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
@commands.command()
@checks.isOwner()
async def unload(self, *, module: str):
"""Unloads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.unload_extension(module)
await self.bot.say("I have just unloaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
@commands.command()
@checks.isOwner()
async def reload(self, *, module: str):
"""Reloads a module"""
try:
module = module.lower()
if not module.startswith("cogs"):
module = "cogs.{}".format(module)
self.bot.unload_extension(module)
self.bot.load_extension(module)
await self.bot.say("I have just reloaded the {} module".format(module))
except Exception as e:
fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```'
await self.bot.say(fmt.format(type(e).__name__, e))
def setup(bot): def setup(bot):
bot.add_cog(Owner(bot)) bot.add_cog(Owner(bot))

View file

@ -1,12 +1,10 @@
import asyncio import asyncio
import discord import discord
import traceback
from discord.ext import commands from discord.ext import commands
from .utils import checks
if not discord.opus.is_loaded(): if not discord.opus.is_loaded():
discord.opus.load_opus('/usr/lib64/libopus.so.0') discord.opus.load_opus('/usr/lib64/libopus.so.0')
class VoiceEntry: class VoiceEntry:
def __init__(self, message, player): def __init__(self, message, player):
@ -147,7 +145,7 @@ class Music:
await state.songs.put(entry) await state.songs.put(entry)
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def volume(self, ctx, value: int): async def volume(self, ctx, value: int):
"""Sets the volume of the currently playing song.""" """Sets the volume of the currently playing song."""
@ -158,7 +156,7 @@ class Music:
await self.bot.say('Set the volume to {:.0%}'.format(player.volume)) await self.bot.say('Set the volume to {:.0%}'.format(player.volume))
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def pause(self, ctx): async def pause(self, ctx):
"""Pauses the currently played song.""" """Pauses the currently played song."""
state = self.get_voice_state(ctx.message.server) state = self.get_voice_state(ctx.message.server)
@ -167,7 +165,7 @@ class Music:
player.pause() player.pause()
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def resume(self, ctx): async def resume(self, ctx):
"""Resumes the currently played song.""" """Resumes the currently played song."""
state = self.get_voice_state(ctx.message.server) state = self.get_voice_state(ctx.message.server)
@ -176,7 +174,7 @@ class Music:
player.resume() player.resume()
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def stop(self, ctx): async def stop(self, ctx):
"""Stops playing audio and leaves the voice channel. """Stops playing audio and leaves the voice channel.
This also clears the queue. This also clears the queue.
@ -228,7 +226,7 @@ class Music:
await self.bot.say('You have already voted to skip this song.') await self.bot.say('You have already voted to skip this song.')
@commands.command(pass_context=True, no_pm=True) @commands.command(pass_context=True, no_pm=True)
@checks.isMod() @commands.has_permissions(kick_members=True)
async def modskip(self, ctx): async def modskip(self, ctx):
"""Forces a song skip, can only be used by a moderator""" """Forces a song skip, can only be used by a moderator"""
state = self.get_voice_state(ctx.message.server) state = self.get_voice_state(ctx.message.server)

View file

@ -2,6 +2,7 @@ from discord.ext import commands
from discord.utils import find from discord.utils import find
from .utils import config from .utils import config
import re import re
import pymysql
class Stats: class Stats:
@ -47,7 +48,7 @@ class Stats:
member = find(lambda m: m.id == r['id'], self.bot.get_all_members()) member = find(lambda m: m.id == r['id'], self.bot.get_all_members())
amount = r['amount'] amount = r['amount']
if member in members: if member in members:
output += "\n{0.name}: {1} times".format(member,amount) output += "\n{0.name}: {1} times".format(member, amount)
config.closeConnection() config.closeConnection()
await self.bot.say("```{}```".format(output)) await self.bot.say("```{}```".format(output))
except pymysql.ProgrammingError: except pymysql.ProgrammingError:

View file

@ -31,7 +31,8 @@ async def checkChannels(bot):
user = re.search("(?<=twitch.tv/)(.*)", url).group(1) user = re.search("(?<=twitch.tv/)(.*)", url).group(1)
if not live and notify and channelOnline(user): if not live and notify and channelOnline(user):
cursor.execute('update twitch set live=1 where user_id="{}"'.format(r['user_id'])) cursor.execute('update twitch set live=1 where user_id="{}"'.format(r['user_id']))
await bot.send_message(server, "{} has just gone live! View their stream at {}".format(member.name, url)) await bot.send_message(server, "{} has just gone live! "
"View their stream at {}".format(member.name, url))
elif live and not channelOnline(user): elif live and not channelOnline(user):
cursor.execute('update twitch set live=0 where user_id="{}"'.format(r['user_id'])) cursor.execute('update twitch set live=0 where user_id="{}"'.format(r['user_id']))
await bot.send_message(server, "{} has just gone offline! Catch them next time they stream at {}" await bot.send_message(server, "{} has just gone offline! Catch them next time they stream at {}"
@ -49,7 +50,7 @@ class Twitch:
self.bot = bot self.bot = bot
@commands.group(pass_context=True, no_pm=True, invoke_without_command=True) @commands.group(pass_context=True, no_pm=True, invoke_without_command=True)
async def twitch(self, ctx, *, member: discord.Member=None): async def twitch(self, *, member: discord.Member=None):
"""Use this command to check the twitch info of a user""" """Use this command to check the twitch info of a user"""
if member is not None: if member is not None:
cursor = config.getCursor() cursor = config.getCursor()

View file

@ -9,20 +9,6 @@ def isOwner():
return commands.check(predicate) return commands.check(predicate)
def isMod():
def predicate(ctx):
return ctx.message.author.top_role.permissions.kick_members
return commands.check(predicate)
def isAdmin():
def predicate(ctx):
return ctx.message.author.top_role.permissions.manage_server
return commands.check(predicate)
def isPM(): def isPM():
def predicate(ctx): def predicate(ctx):
return ctx.message.channel.is_private return ctx.message.channel.is_private