124 lines
3.1 KiB
Python
Executable file
124 lines
3.1 KiB
Python
Executable file
from discord.ext import commands
|
|
|
|
|
|
def is_owner_check(message):
|
|
return str(message.author.id) in ['171685542553976832',
|
|
'269156684155453451']
|
|
|
|
|
|
def is_owner(warn=True):
|
|
def check(ctx, log):
|
|
owner = is_owner_check(ctx.message)
|
|
if not owner and log:
|
|
print(ctx.message.author.name + " à essayer d'executer " + ctx.message.content + " sur le serveur " + ctx.message.guild.name)
|
|
return owner
|
|
|
|
owner = commands.check(lambda ctx: check(ctx, warn))
|
|
return owner
|
|
|
|
|
|
"""-------------------------------------------------------------------------"""
|
|
|
|
|
|
async def check_permissions(ctx, perms, *, check=all):
|
|
is_owner = await ctx.bot.is_owner(ctx.author)
|
|
if is_owner or is_owner_check(ctx.message) is True:
|
|
return True
|
|
|
|
resolved = ctx.channel.permissions_for(ctx.author)
|
|
return check(getattr(resolved, name, None) == value for name, value in
|
|
perms.items())
|
|
|
|
|
|
def has_permissions(*, check=all, **perms):
|
|
async def pred(ctx):
|
|
return await check_permissions(ctx, perms, check=check)
|
|
|
|
return commands.check(pred)
|
|
|
|
|
|
async def check_guild_permissions(ctx, perms, *, check=all):
|
|
is_owner = await ctx.bot.is_owner(ctx.author)
|
|
if is_owner:
|
|
return True
|
|
|
|
if ctx.guild is None:
|
|
return False
|
|
|
|
resolved = ctx.author.guild_permissions
|
|
return check(getattr(resolved, name, None) == value for name, value in
|
|
perms.items())
|
|
|
|
|
|
def has_guild_permissions(*, check=all, **perms):
|
|
async def pred(ctx):
|
|
return await check_guild_permissions(ctx, perms, check=check)
|
|
|
|
return commands.check(pred)
|
|
|
|
|
|
# These do not take channel overrides into account
|
|
|
|
|
|
def is_mod():
|
|
async def pred(ctx):
|
|
return await check_guild_permissions(ctx, {'manage_guild': True})
|
|
|
|
return commands.check(pred)
|
|
|
|
|
|
def is_admin():
|
|
async def pred(ctx):
|
|
return await check_guild_permissions(ctx, {'administrator': True})
|
|
|
|
return commands.check(pred)
|
|
|
|
|
|
def mod_or_permissions(**perms):
|
|
perms['manage_guild'] = True
|
|
|
|
async def predicate(ctx):
|
|
return await check_guild_permissions(ctx, perms, check=any)
|
|
|
|
return commands.check(predicate)
|
|
|
|
|
|
def admin_or_permissions(**perms):
|
|
perms['administrator'] = True
|
|
|
|
async def predicate(ctx):
|
|
return await check_guild_permissions(ctx, perms, check=any)
|
|
|
|
return commands.check(predicate)
|
|
|
|
|
|
def is_in_guilds(*guild_ids):
|
|
def predicate(ctx):
|
|
guild = ctx.guild
|
|
if guild is None:
|
|
return False
|
|
return guild.id in guild_ids
|
|
|
|
return commands.check(predicate)
|
|
|
|
|
|
def get_user(message, user):
|
|
try:
|
|
member = message.mentions[0]
|
|
except:
|
|
member = message.guild.get_member_named(user)
|
|
if not member:
|
|
try:
|
|
member = message.guild.get_member(int(user))
|
|
except ValueError:
|
|
pass
|
|
if not member:
|
|
return None
|
|
return member
|
|
|
|
|
|
def check_date(date: str):
|
|
if len(date) == 1:
|
|
return f"0{date}"
|
|
else:
|
|
return date
|