コード例 #1
0
ファイル: hardunmute.py プロジェクト: xKynn/apex-sigma-core
async def hardunmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_channels:
        if message.mentions:
            target = message.mentions[0]
            if len(args) > 1:
                reason = ' '.join(args[1:])
            else:
                reason = 'Not stated.'
            hierarchy_me = hierarchy_permit(message.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(message.author, target)
                if hierarchy_auth:
                    ongoing = discord.Embed(color=0x696969, title='⛓ Editing permissions...')
                    ongoing_msg = await message.channel.send(embed=ongoing)
                    for channel in message.guild.channels:
                        if isinstance(channel, discord.TextChannel) or isinstance(channel, discord.CategoryChannel):
                            try:
                                # noinspection PyTypeChecker
                                await channel.set_permissions(target, overwrite=None, reason=reason)
                            except discord.Forbidden:
                                pass
                    log_embed = generate_log_embed(message, target, args)
                    await log_event(cmd.bot, message.guild, cmd.db, log_embed, 'LogMutes')
                    title = f'✅ {target.display_name} has been hard-unmuted.'
                    response = discord.Embed(color=0x77B255, title=title)
                    await ongoing_msg.delete()
                else:
                    response = discord.Embed(color=0xBE1931, title='❗ That user is equal or above you.')
            else:
                response = discord.Embed(color=0xBE1931, title='❗ I can\'t mute a user equal or above me.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ No user targeted.')
    else:
        response = discord.Embed(title='⛔ Access Denied. Manage Channels needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #2
0
ファイル: massban.py プロジェクト: lu-ci/apex-sigma-core
def get_members(cmd, message, targets):
    """
    :param cmd:
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :type message: discord/Message
    :type targets: list[discord.Member]
    :rtype: list[discord.Member] or str
    """
    results = []
    for target in targets:
        if cmd.bot.user.id != target.id:
            if message.author.id != target.id:
                above_hier = hierarchy_permit(message.author, target)
                is_admin = message.author.permissions_in(
                    message.channel).administrator
                if above_hier or is_admin:
                    above_me = hierarchy_permit(message.guild.me, target)
                    if above_me:
                        results.append(target)
                    else:
                        return f'⛔ {target.name} is above my highest role.'
                else:
                    return f'⛔ {target.name} is equal or above you.'
            else:
                return '❗ You can\'t ban yourself.'
        else:
            return '❗ I can\'t ban myself.'
    return results
コード例 #3
0
ファイル: softban.py プロジェクト: gphazon/phaz-core
async def softban(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).ban_members:
        if message.mentions:
            target = message.mentions[0]
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(message.guild.me, target)
                        if above_me:
                            reason = ' '.join(args[1:]) if args[1:] else None
                            response = discord.Embed(
                                color=0x696969,
                                title=f'🔩 The user has been soft-banned.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title,
                                                icon_url=user_avatar(target))
                            to_target = discord.Embed(color=0x696969)
                            to_target.add_field(
                                name='🔩 You have been soft-banned.',
                                value=f'Reason: {reason}')
                            to_target.set_footer(
                                text=f'From: {message.guild.name}.',
                                icon_url=message.guild.icon_url)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            await target.ban(
                                reason=
                                f'By {message.author.name}: {reason} (Soft)')
                            await target.unban()
                            log_embed = generate_log_embed(
                                message, target, reason)
                            await log_event(cmd.bot, message.guild, cmd.db,
                                            log_embed, 'LogBans')
                        else:
                            response = discord.Embed(
                                color=0xBE1931,
                                title='⛔ Target is above my highest role.')
                    else:
                        response = discord.Embed(
                            color=0xBE1931,
                            title=
                            '⛔ Can\'t soft-ban someone equal or above you.')
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ You can\'t soft-ban yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t soft-ban myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = permission_denied('Ban permissions')
    await message.channel.send(embed=response)
コード例 #4
0
async def kick(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).kick_members:
        if message.mentions:
            target = message.mentions[0]
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(message.guild.me, target)
                        if above_me:
                            if len(args) > 1:
                                reason = ' '.join(args[1:])
                            else:
                                reason = 'No reason stated.'
                            response = discord.Embed(
                                color=0xc1694f,
                                title=f'👢 The user has been removed.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title,
                                                icon_url=user_avatar(target))
                            to_target = discord.Embed(color=0xc1694f)
                            to_target.add_field(name='👢 You have been kicked.',
                                                value=f'Reason: {reason}')
                            to_target.set_footer(
                                text=f'From: {message.guild.name}.',
                                icon_url=message.guild.icon_url)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            await target.kick(
                                reason=f'By {message.author.name}: {reason}')
                            log_embed = generate_log_embed(
                                message, target, reason)
                            await log_event(cmd.bot, message.guild, cmd.db,
                                            log_embed, 'LogKicks')
                        else:
                            response = discord.Embed(
                                title='⛔ Target is above my highest role.',
                                color=0xBE1931)
                    else:
                        response = discord.Embed(
                            title='⛔ Can\'t kick someone equal or above you.',
                            color=0xBE1931)
                else:
                    response = discord.Embed(
                        color=0xBE1931, title='❗ You can\'t kick yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t kick myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = discord.Embed(
            title='⛔ Access Denied. Kick permissions needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #5
0
async def hardmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_channels:
        if message.mentions:
            target = message.mentions[0]
            if len(args) > 1:
                reason = ' '.join(args[1:])
            else:
                reason = 'Not stated.'
            hierarchy_me = hierarchy_permit(message.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(message.author, target)
                if hierarchy_auth:
                    ongoing = discord.Embed(color=0x696969,
                                            title='⛓ Editing permissions...')
                    ongoing_msg = await message.channel.send(embed=ongoing)
                    for channel in message.guild.channels:
                        if isinstance(channel,
                                      discord.TextChannel) or isinstance(
                                          channel, discord.CategoryChannel):
                            try:
                                await channel.set_permissions(
                                    target,
                                    send_messages=False,
                                    add_reactions=False)
                            except discord.Forbidden:
                                pass
                    await ongoing_msg.delete()
                    log_embed = generate_log_embed(message, target, args)
                    await log_event(cmd.bot, message.guild, cmd.db, log_embed,
                                    'LogMutes')
                    title = f'✅ {target.display_name} has been hard-muted.'
                    response = discord.Embed(color=0x77B255, title=title)
                    to_target_title = f'🔇 You have been hard-muted.'
                    to_target = discord.Embed(color=0x696969)
                    to_target.add_field(name=to_target_title,
                                        value=f'Reason: {reason}')
                    to_target.set_footer(text=f'On: {message.guild.name}',
                                         icon_url=message.guild.icon_url)
                    try:
                        await target.send(embed=to_target)
                    except discord.Forbidden:
                        pass
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ That user is equal or above you.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ I can\'t mute a user equal or above me.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = discord.Embed(
            title='⛔ Access Denied. Manage Channels needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #6
0
ファイル: voicekick.py プロジェクト: lu-ci/apex-sigma-core
async def voicekick(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if pld.msg.author.permissions_in(pld.msg.channel).kick_members:
        target = get_broad_target(pld)
        if target:
            if cmd.bot.user.id != target.id:
                if pld.msg.author.id != target.id:
                    above_hier = hierarchy_permit(pld.msg.author, target)
                    is_admin = pld.msg.author.permissions_in(
                        pld.msg.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(pld.msg.guild.me, target)
                        if above_me:
                            if target.voice:
                                tvc = target.voice.channel
                                tempvc = discord.utils.find(
                                    lambda x: x.name == 'Kick Hall',
                                    pld.msg.guild.channels)
                                if not tempvc:
                                    tempvc = await pld.msg.guild.create_voice_channel(
                                        'Kick Hall')
                                await target.move_to(tempvc)
                                await tempvc.delete()
                                remove_title = f'👢 {target.name} has been removed from {tvc.name}.'
                                response = discord.Embed(color=0xc1694f,
                                                         title=remove_title)
                            else:
                                response = GenericResponse(
                                    f'{target.name} is not in a voice channel.'
                                ).error()
                        else:
                            response = GenericResponse(
                                'Target is above my highest role.').denied()
                    else:
                        response = GenericResponse(
                            'Can\'t kick someone equal or above you.').denied(
                            )
                else:
                    response = GenericResponse(
                        'You can\'t kick yourself.').error()
            else:
                response = GenericResponse('I can\'t kick myself.').error()
        else:
            response = GenericResponse('No user targeted.').error()
    else:
        response = GenericResponse(
            'Access Denied. Kick permissions needed.').denied()
    await pld.msg.channel.send(embed=response)
コード例 #7
0
async def voicekick(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).kick_members:
        if message.mentions:
            target = message.mentions[0]
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(message.guild.me, target)
                        if above_me:
                            if target.voice:
                                tvc = target.voice.channel
                                tempvc = discord.utils.find(
                                    lambda x: x.name == 'Kick Hall',
                                    message.guild.channels)
                                if not tempvc:
                                    tempvc = await message.guild.create_voice_channel(
                                        'Kick Hall')
                                await target.move_to(tempvc)
                                await tempvc.delete()
                                remove_title = f'👢 {target.name} has been removed from {tvc.name}.'
                                response = discord.Embed(color=0xc1694f,
                                                         title=remove_title)
                            else:
                                not_in_voice = f'❗ {target.name} is not in a voice channel.'
                                response = discord.Embed(color=0xBE1931,
                                                         title=not_in_voice)
                        else:
                            response = discord.Embed(
                                color=0xBE1931,
                                title='⛔ Target is above my highest role.')
                    else:
                        response = discord.Embed(
                            color=0xBE1931,
                            title='⛔ Can\'t kick someone equal or above you.')
                else:
                    response = discord.Embed(
                        color=0xBE1931, title='❗ You can\'t kick yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t kick myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = permission_denied('Kick permissions')
    await message.channel.send(embed=response)
コード例 #8
0
async def textunmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if not message.author.permissions_in(message.channel).manage_messages:
        response = permission_denied('Manage Messages')
    else:
        if not message.mentions:
            response = discord.Embed(color=0xBE1931, title='❗ No user targeted.')
        else:
            author = message.author
            target = message.mentions[0]
            is_admin = author.permissions_in(message.channel).administrator
            if author.id == target.id and not is_admin:
                response = discord.Embed(color=0xBE1931, title='❗ Can\'t unmute yourself.')
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier and not is_admin:
                    response = discord.Embed(color=0xBE1931, title='⛔ Can\'t unmute someone equal or above you.')
                else:
                    mute_list = await cmd.db.get_guild_settings(message.guild.id, 'muted_users')
                    if mute_list is None:
                        mute_list = []
                    if target.id not in mute_list:
                        resp_title = f'❗ {target.display_name} is not text muted.'
                        response = discord.Embed(color=0xBE1931, title=resp_title)
                    else:
                        mute_list.remove(target.id)
                        reason = ' '.join(args[1:]) if args[1:] else None
                        await cmd.db.set_guild_settings(message.guild.id, 'muted_users', mute_list)
                        response = discord.Embed(color=0x77B255, title=f'✅ {target.display_name} has been unmuted.')
                        log_embed = generate_log_embed(message, target, reason)
                        await log_event(cmd.bot, message.guild, cmd.db, log_embed, 'log_mutes')
    await message.channel.send(embed=response)
コード例 #9
0
async def textmute(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if not pld.msg.author.permissions_in(pld.msg.channel).manage_messages:
        response = denied('Access Denied. Manage Messages needed.')
    else:
        if not pld.msg.mentions:
            response = error('No user targeted.')
        else:
            author = pld.msg.author
            target = pld.msg.mentions[0]
            if author.id == target.id:
                response = error('Can\'t mute yourself.')
            elif cmd.bot.user.id == target.id:
                response = error('I can\'t mute myself.')
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier:
                    response = denied('Can\'t mute someone equal or above you.')
                else:
                    timed = pld.args[-1].startswith('--time=')
                    try:
                        now = arrow.utcnow().timestamp
                        endstamp = now + convert_to_seconds(pld.args[-1].split('=')[-1]) if timed else None
                    except (LookupError, ValueError):
                        err_response = error('Please use the format HH:MM:SS.')
                        await pld.msg.channel.send(embed=err_response)
                        return
                    mute_list = pld.settings.get('muted_users')
                    if mute_list is None:
                        mute_list = []
                    if target.id in mute_list:
                        response = error(f'{target.display_name} is already text muted.')
                    else:
                        mute_list.append(target.id)
                        await cmd.db.set_guild_settings(pld.msg.guild.id, 'muted_users', mute_list)
                        response = ok(f'{target.display_name} has been text muted.')
                        rarg = pld.args[1:-1] if timed else pld.args[1:] if pld.args[1:] else None
                        reason = ' '.join(rarg) if rarg else None
                        await make_incident(cmd.db, pld.msg.guild, pld.msg.author, target, reason)
                        log_embed = generate_log_embed(pld.msg, target, reason)
                        await log_event(cmd.bot, pld.settings, log_embed, 'log_mutes')
                        guild_icon = str(pld.msg.guild.icon_url) if pld.msg.guild.icon_url else discord.Embed.Empty
                        to_target_title = '🔇 You have been text muted.'
                        to_target = discord.Embed(color=0x696969)
                        to_target.add_field(name=to_target_title, value=f'Reason: {reason}')
                        to_target.set_footer(text=f'On: {pld.msg.guild.name}', icon_url=guild_icon)
                        try:
                            await target.send(embed=to_target)
                        except discord.Forbidden:
                            pass
                        if endstamp:
                            doc_data = {'server_id': pld.msg.guild.id, 'user_id': target.id, 'time': endstamp}
                            await cmd.db[cmd.db.db_nam].TextmuteClockworkDocs.insert_one(doc_data)
    await pld.msg.channel.send(embed=response)
コード例 #10
0
async def kick(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if pld.msg.author.permissions_in(pld.msg.channel).kick_members:
        target = get_broad_target(pld)
        if target:
            if cmd.bot.user.id != target.id:
                if pld.msg.author.id != target.id:
                    above_hier = hierarchy_permit(pld.msg.author, target)
                    is_admin = pld.msg.author.permissions_in(pld.msg.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(pld.msg.guild.me, target)
                        if above_me:
                            reason = ' '.join(pld.args[1:]) if pld.args[1:] else None
                            response = discord.Embed(color=0xc1694f, title='👢 The user has been removed.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title, icon_url=user_avatar(target))
                            to_target = discord.Embed(color=0xc1694f)
                            to_target.add_field(name='👢 You have been kicked.', value=f'Reason: {reason}')
                            guild_icon = str(pld.msg.guild.icon_url) if pld.msg.guild.icon_url else discord.Embed.Empty
                            to_target.set_footer(text=f'From: {pld.msg.guild.name}.', icon_url=guild_icon)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            author = f'{pld.msg.author.name}#{pld.msg.author.discriminator}'
                            await target.kick(reason=f'By {author}: {reason}')
                            log_embed = generate_log_embed(pld.msg, target, reason)
                            await log_event(cmd.bot, pld.settings, log_embed, 'log_kicks')
                        else:
                            response = denied('Target is above my highest role.')
                    else:
                        response = denied('Can\'t kick someone equal or above you.')
                else:
                    response = error('You can\'t kick yourself.')
            else:
                response = error('I can\'t kick myself.')
        else:
            response = error('No user targeted.')
    else:
        response = denied('Access Denied. Kick permissions needed.')
    await pld.msg.channel.send(embed=response)
コード例 #11
0
async def hardunmute(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if pld.msg.author.permissions_in(pld.msg.channel).manage_channels:
        target = get_broad_target(pld)
        if target:
            hierarchy_me = hierarchy_permit(pld.msg.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(pld.msg.author, target)
                if hierarchy_auth:
                    reason = ' '.join(pld.args[1:]) if pld.args[1:] else None
                    await make_incident(cmd.db, pld.msg.guild, pld.msg.author,
                                        target, reason)
                    ongoing = discord.Embed(color=0x696969,
                                            title='⛓ Editing permissions...')
                    ongoing_msg = await pld.msg.channel.send(embed=ongoing)
                    for channel in pld.msg.guild.channels:
                        if isinstance(channel,
                                      discord.TextChannel) or isinstance(
                                          channel, discord.CategoryChannel):
                            try:
                                # noinspection PyTypeChecker
                                await channel.set_permissions(target,
                                                              overwrite=None,
                                                              reason=reason)
                            except discord.Forbidden:
                                pass
                    log_embed = generate_log_embed(pld.msg, target, reason)
                    await log_event(cmd.bot, pld.settings, log_embed,
                                    'log_mutes')
                    response = ok(
                        f'{target.display_name} has been hard-unmuted.')
                    await ongoing_msg.delete()
                else:
                    response = error('That user is equal or above you.')
            else:
                response = error('I can\'t mute a user equal or above me.')
        else:
            response = error('No user targeted.')
    else:
        response = denied('Access Denied. Manage Channels needed.')
    await pld.msg.channel.send(embed=response)
コード例 #12
0
ファイル: textmute.py プロジェクト: pengowray/apex-sigma-core
async def textmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if not message.author.permissions_in(message.channel).manage_messages:
        response = discord.Embed(
            title='⛔ Access Denied. Manage Messages needed.', color=0xBE1931)
    else:
        if not message.mentions:
            response = discord.Embed(title='❗ No user targeted.',
                                     color=0xBE1931)
        else:
            author = message.author
            target = message.mentions[0]
            if author.id == target.id:
                response = discord.Embed(title='❗ Can\'t mute yourself.',
                                         color=0xBE1931)
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier:
                    response = discord.Embed(
                        title='⛔ Can\'t mute someone equal or above you.',
                        color=0xBE1931)
                else:
                    mute_list = await cmd.db.get_guild_settings(
                        message.guild.id, 'MutedUsers')
                    if mute_list is None:
                        mute_list = []
                    if target.id in mute_list:
                        resp_title = f'❗ {target.display_name} is already text muted.'
                        response = discord.Embed(title=resp_title,
                                                 color=0xBE1931)
                    else:
                        mute_list.append(target.id)
                        await cmd.db.set_guild_settings(
                            message.guild.id, 'MutedUsers', mute_list)
                        response = discord.Embed(
                            color=0x77B255,
                            title=
                            f'✅ {target.display_name} has been text muted.')
                        log_embed = generate_log_embed(message, target, args)
                        await log_event(cmd.bot, message.guild, cmd.db,
                                        log_embed, 'LogMutes')
                        if len(args) > 1:
                            reason = ' '.join(args[1:])
                        else:
                            reason = 'Not stated.'
                        to_target_title = f'🔇 You have been text muted.'
                        to_target = discord.Embed(color=0x696969)
                        to_target.add_field(name=to_target_title,
                                            value=f'Reason: {reason}')
                        to_target.set_footer(text=f'On: {message.guild.name}',
                                             icon_url=message.guild.icon_url)
                        try:
                            await target.send(embed=to_target)
                        except discord.Forbidden:
                            pass
    await message.channel.send(embed=response)
コード例 #13
0
ファイル: softban.py プロジェクト: gphazon/apex-sigma-plugins
async def softban(cmd, message, args):
    if message.author.permissions_in(message.channel).ban_members:
        if message.mentions:
            target = message.mentions[0]
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        if len(args) > 1:
                            reason = ' '.join(args[1:])
                        else:
                            reason = 'No reason stated.'
                        response = discord.Embed(
                            color=0x696969,
                            title=f'🔩 The user has been soft-banned.')
                        response_title = f'{target.name}#{target.discriminator}'
                        response.set_author(name=response_title,
                                            icon_url=user_avatar(target))
                        to_target = discord.Embed(color=0x696969)
                        to_target.add_field(
                            name='🔩 You have been soft-banned.',
                            value=f'Reason: {reason}')
                        to_target.set_footer(
                            text=f'From: {message.guild.name}.',
                            icon_url=message.guild.icon_url)
                        try:
                            await target.send(embed=to_target)
                        except discord.ClientException:
                            pass
                        await target.ban(
                            reason=f'By {message.author.name}: {reason} (Soft)'
                        )
                        await target.unban()
                    else:
                        response = discord.Embed(
                            title=
                            '⛔ Can\'t soft-ban someone equal or above you.',
                            color=0xBE1931)
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ You can\'t soft-ban yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t soft-ban myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = discord.Embed(
            title='⛔ Access Denied. Ban permissions needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #14
0
ファイル: hardunmute.py プロジェクト: AXAz0r/apex-sigma-core
async def hardunmute(cmd, message, args):
    if message.author.permissions_in(message.channel).manage_channels:
        if message.mentions:
            target = message.mentions[0]
            if len(args) > 1:
                reason = ' '.join(args[1:])
            else:
                reason = 'Not stated.'
            hierarchy_me = hierarchy_permit(message.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(message.author, target)
                if hierarchy_auth:
                    for channel in message.guild.channels:
                        if isinstance(channel, discord.TextChannel):
                            try:
                                await channel.set_permissions(target,
                                                              overwrite=None,
                                                              reason=reason)
                            except discord.Forbidden:
                                pass
                    log_embed = generate_log_embed(message, target, args)
                    await log_event(cmd.db, message.guild, log_embed)
                    title = f'✅ {target.name}#{target.discriminator} has been hard-unmuted.'
                    response = discord.Embed(color=0x77B255, title=title)
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ That user is euqal or above you.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ I can\'t mute a user equal or above me.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targetted.')
    else:
        response = discord.Embed(
            title='⛔ Access Denied. Manage Channels needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #15
0
async def textunmute(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if not pld.msg.author.permissions_in(pld.msg.channel).manage_messages:
        response = GenericResponse(
            'Access Denied. Manage Messages needed.').denied()
    else:
        if not pld.msg.mentions:
            response = GenericResponse('No user targeted.').error()
        else:
            author = pld.msg.author
            target = pld.msg.mentions[0]
            is_admin = author.permissions_in(pld.msg.channel).administrator
            if author.id == target.id and not is_admin:
                response = GenericResponse('Can\'t unmute yourself.').error()
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier and not is_admin:
                    response = GenericResponse(
                        'Can\'t unmute someone equal or above you.').denied()
                else:
                    mute_list = pld.settings.get('muted_users')
                    if mute_list is None:
                        mute_list = []
                    if target.id not in mute_list:
                        response = GenericResponse(
                            f'{target.display_name} is not text-muted.').error(
                            )
                    else:
                        mute_list.remove(target.id)
                        reason = ' '.join(
                            pld.args[1:]) if pld.args[1:] else None
                        await make_incident(cmd.db, pld.msg.guild,
                                            pld.msg.author, target, reason)
                        await cmd.db.set_guild_settings(
                            pld.msg.guild.id, 'muted_users', mute_list)
                        response = GenericResponse(
                            f'{target.display_name} has been unmuted.').ok()
                        log_embed = generate_log_embed(pld.msg, target, reason)
                        await log_event(cmd.bot, pld.settings, log_embed,
                                        'log_mutes')
    await pld.msg.channel.send(embed=response)
コード例 #16
0
ファイル: textmute.py プロジェクト: PaPiix/apex-sigma-core
async def textmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if not message.author.permissions_in(message.channel).manage_messages:
        response = permission_denied('Manage Messages')
    else:
        if not message.mentions:
            response = discord.Embed(color=0xBE1931, title='❗ No user targeted.')
        else:
            author = message.author
            target = message.mentions[0]
            if author.id == target.id:
                response = discord.Embed(color=0xBE1931, title='❗ Can\'t mute yourself.')
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier:
                    response = discord.Embed(color=0xBE1931, title='⛔ Can\'t mute someone equal or above you.')
                else:
                    timed = args[-1].startswith('--time=')
                    endstamp = arrow.utcnow().timestamp + convert_to_seconds(args[-1].split('=')[-1]) if timed else None
                    mute_list = await cmd.db.get_guild_settings(message.guild.id, 'MutedUsers')
                    if mute_list is None:
                        mute_list = []
                    if target.id in mute_list:
                        resp_title = f'❗ {target.display_name} is already text muted.'
                        response = discord.Embed(color=0xBE1931, title=resp_title)
                    else:
                        mute_list.append(target.id)
                        await cmd.db.set_guild_settings(message.guild.id, 'MutedUsers', mute_list)
                        response = discord.Embed(color=0x77B255, title=f'✅ {target.display_name} has been text muted.')
                        rarg = args[1:-1] if timed else args[1:] if args[1:] else None
                        reason = ' '.join(rarg) if rarg else None
                        log_embed = generate_log_embed(message, target, reason)
                        await log_event(cmd.bot, message.guild, cmd.db, log_embed, 'LogMutes')
                        to_target_title = f'🔇 You have been text muted.'
                        to_target = discord.Embed(color=0x696969)
                        to_target.add_field(name=to_target_title, value=f'Reason: {reason}')
                        to_target.set_footer(text=f'On: {message.guild.name}', icon_url=message.guild.icon_url)
                        try:
                            await target.send(embed=to_target)
                        except discord.Forbidden:
                            pass
                        if endstamp:
                            doc_data = {'ServerID': message.guild.id, 'UserID': target.id, 'Time': endstamp}
                            await cmd.db[cmd.db.db_nam].TextmuteClockworkDocs.insert_one(doc_data)
    await message.channel.send(embed=response)
コード例 #17
0
async def textunmute(cmd, message, args):
    if not message.author.permissions_in(message.channel).manage_messages:
        response = discord.Embed(
            title='⛔ Access Denied. Manage Messages needed.', color=0xBE1931)
    else:
        if not message.mentions:
            response = discord.Embed(title='❗ No user targeted.',
                                     color=0xBE1931)
        else:
            author = message.author
            target = message.mentions[0]
            is_admin = author.permissions_in(message.channel).administrator
            if author.id == target.id and not is_admin:
                response = discord.Embed(title='❗ Can\'t unmute yourself.',
                                         color=0xBE1931)
            else:
                above_hier = hierarchy_permit(author, target)
                if not above_hier and not is_admin:
                    response = discord.Embed(
                        title='⛔ Can\'t unmute someone equal or above you.',
                        color=0xBE1931)
                else:
                    mute_list = cmd.db.get_guild_settings(
                        message.guild.id, 'MutedUsers')
                    if mute_list is None:
                        mute_list = []
                    if target.id not in mute_list:
                        resp_title = f'❗ {target.display_name} is not text muted.'
                        response = discord.Embed(title=resp_title,
                                                 color=0xBE1931)
                    else:
                        mute_list.remove(target.id)
                        cmd.db.set_guild_settings(message.guild.id,
                                                  'MutedUsers', mute_list)
                        response = discord.Embed(
                            color=0x77B255,
                            title=f'✅ {target.display_name} has been unmuted.')
                        log_embed = generate_log_embed(message, target, args)
                        await log_event(cmd.db, message.guild, log_embed)
    await message.channel.send(embed=response)
コード例 #18
0
async def hardmute(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_channels:
        if message.mentions:
            target = message.mentions[0]
            hierarchy_me = hierarchy_permit(message.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(message.author, target)
                if hierarchy_auth:
                    ongoing = discord.Embed(color=0x696969,
                                            title='⛓ Editing permissions...')
                    ongoing_msg = await message.channel.send(embed=ongoing)
                    timed = args[-1].startswith('--time=')
                    try:
                        now = arrow.utcnow().timestamp
                        endstamp = now + convert_to_seconds(
                            args[-1].split('=')[-1]) if timed else None
                    except (LookupError, ValueError):
                        err_response = discord.Embed(
                            color=0xBE1931,
                            title='❗ Please use the format HH:MM:SS.')
                        await message.channel.send(embed=err_response)
                        return
                    for channel in message.guild.channels:
                        if isinstance(channel,
                                      discord.TextChannel) or isinstance(
                                          channel, discord.CategoryChannel):
                            try:
                                await channel.set_permissions(
                                    target,
                                    send_messages=False,
                                    add_reactions=False)
                            except discord.Forbidden:
                                pass
                    await ongoing_msg.delete()
                    rarg = args[
                        1:-1] if timed else args[1:] if args[1:] else None
                    reason = ' '.join(rarg) if rarg else None
                    log_embed = generate_log_embed(message, target, reason)
                    await log_event(cmd.bot, message.guild, cmd.db, log_embed,
                                    'log_mutes')
                    title = f'✅ {target.display_name} has been hard-muted.'
                    response = discord.Embed(color=0x77B255, title=title)
                    to_target_title = f'🔇 You have been hard-muted.'
                    to_target = discord.Embed(color=0x696969)
                    to_target.add_field(name=to_target_title,
                                        value=f'Reason: {reason}')
                    to_target.set_footer(text=f'On: {message.guild.name}',
                                         icon_url=message.guild.icon_url)
                    try:
                        await target.send(embed=to_target)
                    except discord.Forbidden:
                        pass
                    if endstamp:
                        doc_data = {
                            'server_id': message.guild.id,
                            'user_id': target.id,
                            'time': endstamp
                        }
                        await cmd.db[
                            cmd.db.db_nam
                        ].HardmuteClockworkDocs.insert_one(doc_data)
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ That user is equal or above you.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ I can\'t mute a user equal or above me.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = permission_denied('Manage Channels')
    await message.channel.send(embed=response)
コード例 #19
0
async def ban(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).ban_members:
        if message.mentions:
            target = message.mentions[0]
            if len(args) >= 2:
                try:
                    clean_days = int(args[-1])
                except ValueError:
                    clean_days = 0
            else:
                clean_days = 0
            clean_days = clean_days if clean_days in [0, 1, 7] else 0
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(message.guild.me, target)
                        if above_me:
                            if len(args) > 1:
                                reason = ' '.join(args[1:])
                            else:
                                reason = 'No reason stated.'
                            response = discord.Embed(
                                color=0x696969,
                                title=f'🔨 The user has been banned.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title,
                                                icon_url=user_avatar(target))
                            to_target = discord.Embed(color=0x696969)
                            to_target.add_field(name='🔨 You have been banned.',
                                                value=f'Reason: {reason}')
                            to_target.set_footer(
                                text=f'From: {message.guild.name}.',
                                icon_url=message.guild.icon_url)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            audit_reason = f'By {message.author.name}: {reason}'
                            await target.ban(reason=audit_reason,
                                             delete_message_days=clean_days)
                            log_embed = generate_log_embed(
                                message, target, reason)
                            await log_event(cmd.bot, message.guild, cmd.db,
                                            log_embed, 'LogBans')
                        else:
                            response = discord.Embed(
                                title='⛔ Target is above my highest role.',
                                color=0xBE1931)
                    else:
                        response = discord.Embed(
                            title='⛔ Can\'t ban someone equal or above you.',
                            color=0xBE1931)
                else:
                    response = discord.Embed(
                        color=0xBE1931, title='❗ You can\'t ban yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t ban myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = discord.Embed(
            title='⛔ Access Denied. Ban permissions needed.', color=0xBE1931)
    await message.channel.send(embed=response)
コード例 #20
0
async def ban(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if pld.msg.author.permissions_in(pld.msg.channel).ban_members:
        target = get_broad_target(pld)
        if target:
            timed = pld.args[-1].startswith('--time=')
            try:
                now = arrow.utcnow().timestamp
                endstamp = now + convert_to_seconds(
                    pld.args[-1].split('=')[-1]) if timed else None
            except (LookupError, ValueError):
                err_response = error('Please use the format HH:MM:SS.')
                await pld.msg.channel.send(embed=err_response)
                return
            if len(pld.args) >= 2:
                try:
                    if endstamp:
                        clean_days = int(pld.args[-2])
                    else:
                        clean_days = int(pld.args[-1])
                except ValueError:
                    clean_days = 0
            else:
                clean_days = 0
            clean_days = clean_days if clean_days in [0, 1, 7] else 0
            if cmd.bot.user.id != target.id:
                if pld.msg.author.id != target.id:
                    above_hier = hierarchy_permit(pld.msg.author, target)
                    is_admin = pld.msg.author.permissions_in(
                        pld.msg.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(pld.msg.guild.me, target)
                        if above_me:
                            rarg = pld.args[1:-1] if timed else pld.args[
                                1:] if pld.args[1:] else None
                            reason = ' '.join(rarg) if rarg else None
                            response = discord.Embed(
                                color=0x696969,
                                title='🔨 The user has been banned.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title,
                                                icon_url=user_avatar(target))
                            guild_icon = str(
                                pld.msg.guild.icon_url
                            ) if pld.msg.guild.icon_url else discord.Embed.Empty
                            to_target = discord.Embed(color=0x696969)
                            to_target.add_field(
                                name='🔨 You have been banned.',
                                value=f'Reason: {reason}')
                            to_target.set_footer(
                                text=f'From: {pld.msg.guild.name}.',
                                icon_url=guild_icon)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            audit_reason = f'By {pld.msg.author.name}#{pld.msg.author.discriminator}: {reason}'
                            await target.ban(reason=audit_reason,
                                             delete_message_days=clean_days)
                            log_embed = generate_log_embed(
                                pld.msg, target, reason)
                            await log_event(cmd.bot, pld.settings, log_embed,
                                            'log_bans')
                            if endstamp:
                                doc_data = {
                                    'server_id': pld.msg.guild.id,
                                    'user_id': target.id,
                                    'time': endstamp
                                }
                                await cmd.db[
                                    cmd.db.db_nam
                                ].BanClockworkDocs.insert_one(doc_data)
                        else:
                            response = denied(
                                'Target is above my highest role.')
                    else:
                        response = denied(
                            'Can\'t ban someone equal or above you.')
                else:
                    response = error('You can\'t ban yourself.')
            else:
                response = error('I can\'t ban myself.')
        else:
            response = error('No user targeted.')
    else:
        response = denied('Access Denied. Ban permissions needed.')
    await pld.msg.channel.send(embed=response)
コード例 #21
0
async def ban(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).ban_members:
        if message.mentions:
            target = message.mentions[0]
            timed = args[-1].startswith('--time=')
            try:
                now = arrow.utcnow().timestamp
                endstamp = now + convert_to_seconds(
                    args[-1].split('=')[-1]) if timed else None
            except (LookupError, ValueError):
                err_response = discord.Embed(
                    color=0xBE1931, title='❗ Please use the format HH:MM:SS.')
                await message.channel.send(embed=err_response)
                return
            if len(args) >= 2:
                try:
                    if endstamp:
                        clean_days = int(args[-2])
                    else:
                        clean_days = int(args[-1])
                except ValueError:
                    clean_days = 0
            else:
                clean_days = 0
            clean_days = clean_days if clean_days in [0, 1, 7] else 0
            if cmd.bot.user.id != target.id:
                if message.author.id != target.id:
                    above_hier = hierarchy_permit(message.author, target)
                    is_admin = message.author.permissions_in(
                        message.channel).administrator
                    if above_hier or is_admin:
                        above_me = hierarchy_permit(message.guild.me, target)
                        if above_me:
                            rarg = args[1:-1] if timed else args[1:] if args[
                                1:] else None
                            reason = ' '.join(rarg) if rarg else None
                            response = discord.Embed(
                                color=0x696969,
                                title=f'🔨 The user has been banned.')
                            response_title = f'{target.name}#{target.discriminator}'
                            response.set_author(name=response_title,
                                                icon_url=user_avatar(target))
                            to_target = discord.Embed(color=0x696969)
                            to_target.add_field(name='🔨 You have been banned.',
                                                value=f'Reason: {reason}')
                            to_target.set_footer(
                                text=f'From: {message.guild.name}.',
                                icon_url=message.guild.icon_url)
                            try:
                                await target.send(embed=to_target)
                            except discord.Forbidden:
                                pass
                            audit_reason = f'By {message.author.name}: {reason}'
                            await target.ban(reason=audit_reason,
                                             delete_message_days=clean_days)
                            log_embed = generate_log_embed(
                                message, target, reason)
                            await log_event(cmd.bot, message.guild, cmd.db,
                                            log_embed, 'log_bans')
                            if endstamp:
                                doc_data = {
                                    'server_id': message.guild.id,
                                    'user_id': target.id,
                                    'time': endstamp
                                }
                                await cmd.db[
                                    cmd.db.db_nam
                                ].BanClockworkDocs.insert_one(doc_data)
                        else:
                            response = discord.Embed(
                                color=0xBE1931,
                                title='⛔ Target is above my highest role.')
                    else:
                        response = discord.Embed(
                            color=0xBE1931,
                            title='⛔ Can\'t ban someone equal or above you.')
                else:
                    response = discord.Embed(
                        color=0xBE1931, title='❗ You can\'t ban yourself.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ I can\'t ban myself.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = permission_denied('Ban permissions')
    await message.channel.send(embed=response)
コード例 #22
0
ファイル: hardmute.py プロジェクト: lu-ci/apex-sigma-core
async def hardmute(cmd, pld):
    """
    :param cmd: The command object referenced in the command.
    :type cmd: sigma.core.mechanics.command.SigmaCommand
    :param pld: The payload with execution data and details.
    :type pld: sigma.core.mechanics.payload.CommandPayload
    """
    if pld.msg.author.permissions_in(pld.msg.channel).manage_channels:
        target = get_broad_target(pld)
        if target:
            hierarchy_me = hierarchy_permit(pld.msg.guild.me, target)
            if hierarchy_me:
                hierarchy_auth = hierarchy_permit(pld.msg.author, target)
                if hierarchy_auth:
                    ongoing = discord.Embed(color=0x696969, title='⛓ Editing permissions...')
                    ongoing_msg = await pld.msg.channel.send(embed=ongoing)
                    timed = pld.args[-1].startswith('--time=')
                    try:
                        now = arrow.utcnow().int_timestamp
                        endstamp = now + convert_to_seconds(pld.args[-1].split('=')[-1]) if timed else None
                    except (LookupError, ValueError):
                        err_response = GenericResponse('Please use the format HH:MM:SS.').error()
                        await pld.msg.channel.send(embed=err_response)
                        return
                    for channel in pld.msg.guild.channels:
                        if isinstance(channel, discord.TextChannel) or isinstance(channel, discord.CategoryChannel):
                            try:
                                await channel.set_permissions(target, send_messages=False, add_reactions=False)
                            except (discord.Forbidden, discord.NotFound):
                                pass
                    try:
                        await ongoing_msg.delete()
                    except discord.NotFound:
                        pass
                    rarg = pld.args[1:-1] if timed else pld.args[1:] if pld.args[1:] else None
                    reason = ' '.join(rarg) if rarg else None
                    await make_incident(cmd.db, pld.msg.guild, pld.msg.author, target, reason)
                    log_embed = generate_log_embed(pld.msg, target, reason)
                    await log_event(cmd.bot, pld.settings, log_embed, 'log_mutes')
                    response = GenericResponse(f'{target.display_name} has been hard-muted.').ok()
                    guild_icon = str(pld.msg.guild.icon_url) if pld.msg.guild.icon_url else discord.Embed.Empty
                    to_target_title = '🔇 You have been hard-muted.'
                    to_target = discord.Embed(color=0x696969)
                    to_target.add_field(name=to_target_title, value=f'Reason: {reason}')
                    to_target.set_footer(text=f'On: {pld.msg.guild.name}', icon_url=guild_icon)
                    try:
                        await target.send(embed=to_target)
                    except (discord.Forbidden, discord.HTTPException):
                        pass
                    if endstamp:
                        doc_data = {'server_id': pld.msg.guild.id, 'user_id': target.id, 'time': endstamp}
                        await cmd.db[cmd.db.db_nam].HardmuteClockworkDocs.insert_one(doc_data)
                else:
                    response = GenericResponse('That user is equal or above you.').error()
            else:
                response = GenericResponse('I can\'t mute a user equal or above me.').error()
        else:
            response = GenericResponse('No user targeted.').error()
    else:
        response = GenericResponse('Access Denied. Manage Channels needed.').denied()
    await pld.msg.channel.send(embed=response)