Пример #1
0
async def disabledecay(cmd: SigmaCommand, message: discord.Message,
                       args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if message.channel_mentions:
            target = message.channel_mentions[0]
            decaying_channels = await cmd.db.get_guild_settings(
                message.guild.id, 'DecayingChannels') or []
            if target.id in decaying_channels:
                decaying_channels.remove(target.id)
                await cmd.db.set_guild_settings(message.guild.id,
                                                'DecayingChannels',
                                                decaying_channels)
                await cmd.db[cmd.db.db_nam].DecayingMessages.delete_many(
                    {'Channel': target.id})
                response = discord.Embed(
                    color=0x66CC66,
                    title=f'✅ Decay for #{target.name} has been disabled.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title=f'❗ The channel #{target.name} is not decaying.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No channel targeted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
async def disablemodule(cmd: SigmaCommand, message: discord.Message,
                        args: list):
    if args:
        if not message.author.permissions_in(message.channel).manage_guild:
            response = permission_denied('Manage Server')
        else:
            mdl_name = args[0].lower()
            if mdl_name in cmd.bot.modules.categories:
                perms = await get_all_perms(cmd.db, message)
                disabled_modules = perms['disabled_modules']
                if mdl_name in disabled_modules:
                    response = discord.Embed(
                        color=0xFFCC4D, title='⚠ Module already disabled.')
                else:
                    disabled_modules.append(mdl_name)
                    perms.update({'disabled_modules': disabled_modules})
                    await cmd.db[cmd.db.db_nam].Permissions.update_one(
                        {'server_id': message.guild.id}, {'$set': perms})
                    scp_cache.del_cache(message.guild.id)
                    response = discord.Embed(
                        color=0x77B255,
                        title=f'✅ `{mdl_name.upper()}` disabled.')
            else:
                response = discord.Embed(color=0x696969,
                                         title='🔍 Module not found.')
    else:
        response = discord.Embed(color=0xBE1931, title='❗ Nothing inputted.')
    await message.channel.send(embed=response)
Пример #3
0
async def unbindemoterole(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_guild:
        if args:
            group_id = args[0].lower()
            role_search = ' '.join(args[1:])
            emote_groups = await cmd.db.get_guild_settings(message.guild.id, 'EmoteRoleGroups') or {}
            if group_id in emote_groups:
                bound_roles = emote_groups.get(group_id)
                guild_role = discord.utils.find(lambda x: x.name.lower() == role_search.lower(), message.guild.roles)
                if guild_role:
                    role_name = guild_role.name
                    if guild_role.id in bound_roles:
                        bound_roles.remove(guild_role.id)
                        emote_groups.update({group_id: bound_roles})
                        await cmd.db.set_guild_settings(message.guild.id, 'EmoteRoleGroups', emote_groups)
                        response = discord.Embed(color=0x66CC66, title=f'✅ Removed {role_name} from group {group_id}.')
                    else:
                        response = discord.Embed(color=0xBE1931, title=f'❗ {role_name} is not bound to {group_id}.')
                else:
                    response = discord.Embed(color=0x696969, title=f'🔍 Couldn\'t find the {role_search} role.')
            else:
                response = discord.Embed(color=0x696969, title=f'🔍 Couldn\'t find {group_id} in the group list.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ Nothing inputted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #4
0
async def issuewarning(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_messages:
        if message.mentions:
            target = message.mentions[0]
            if target.id != message.author.id:
                if not target.bot:
                    reason = ' '.join(args[1:]) if args[1:] else 'No reason stated.'
                    warn_data = warning_data(message.author, target, reason)
                    warn_iden = warn_data.get('warning').get('id')
                    await cmd.db[cmd.db.db_cfg.database].Warnings.insert_one(warn_data)
                    response = discord.Embed(color=0x77B255, title=f'✅ Warning {warn_iden} issued to {target.name}.')
                    log_embed = make_log_embed(message.author, target, warn_data)
                    await log_event(cmd.bot, message.guild, cmd.db, log_embed, 'LogWarnings')
                    to_target = discord.Embed(color=0xFFCC4D)
                    to_target.add_field(name='⚠ You received a warning.', 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 Exception:
                        pass
                else:
                    response = discord.Embed(color=0xBE1931, title=f'❗ You can\'t target bots.')
            else:
                response = discord.Embed(color=0xBE1931, title=f'❗ You can\'t target yourself.')
        else:
            response = discord.Embed(color=0xBE1931, title=f'❗ You didn\'t tag any user.')
    else:
        response = permission_denied('Manage Messages')
    await message.channel.send(embed=response)
Пример #5
0
async def toggleselfrole(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_roles:
        if args:
            lookup = ' '.join(args).lower()
            self_roles = await cmd.db.get_guild_settings(message.guild.id, 'SelfRoles') or []
            target_role = discord.utils.find(lambda x: x.name.lower() == lookup.lower(), message.guild.roles)
            if target_role:
                role_below = target_role.position < message.guild.me.top_role.position
                if role_below:
                    if target_role.id in self_roles:
                        self_roles.remove(target_role.id)
                        await cmd.db.set_guild_settings(message.guild.id, 'SelfRoles', self_roles)
                        response = discord.Embed(color=0x77B255, title=f'✅ {target_role.name} removed.')
                    else:
                        self_roles.append(target_role.id)
                        await cmd.db.set_guild_settings(message.guild.id, 'SelfRoles', self_roles)
                        response = discord.Embed(color=0x77B255, title=f'✅ {target_role.name} added.')
                else:
                    response = discord.Embed(color=0xBE1931, title='❗ This role is above my highest role.')
            else:
                response = discord.Embed(color=0x696969, title=f'🔍 {lookup} not found.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ Nothing inputted.')
    else:
        response = permission_denied('Manage Roles')
    await message.channel.send(embed=response)
Пример #6
0
async def decay(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if message.channel_mentions and len(args):
            try:
                decay_time = convert_to_seconds(args[0])
                if decay_time >= 10:
                    decaying_channels = await cmd.db.get_guild_settings(message.guild.id, 'DecayingChannels') or []
                    decaying_timers = await cmd.db.get_guild_settings(message.guild.id, 'DecayingTimers') or {}
                    target = message.channel_mentions[0]
                    if target.id not in decaying_channels:
                        decaying_channels.append(target.id)
                        action = 'created'
                    else:
                        action = 'updated'
                    decaying_timers.update({str(target.id): decay_time})
                    await cmd.db.set_guild_settings(message.guild.id, 'DecayingChannels', decaying_channels)
                    await cmd.db.set_guild_settings(message.guild.id, 'DecayingTimers', decaying_timers)
                    response = discord.Embed(color=0x66CC66, title=f'✅ Decay timer for #{target.name} {action}.')
                else:
                    response = discord.Embed(color=0xBE1931, title='❗ Decay has a minimum of 10 seconds.')
            except (LookupError, ValueError):
                response = discord.Embed(color=0xBE1931, title='❗ Please use the format HH:MM:SS.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ Missing channel or time.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #7
0
async def spawnchevrons(cmd: SigmaCommand, message: discord.Message,
                        args: list):
    if message.author.guild_permissions.manage_guild:
        humans = len([x for x in message.guild.members if not x.bot])
        if humans >= 50:
            target = message.channel_mentions[
                0] if message.channel_mentions else message.channel
            chev_chns = await cmd.db.get_guild_settings(
                message.guild.id, 'chevron_channels') or []
            if target.id not in chev_chns:
                chev_chns.append(target.id)
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ Chevron spawning enabled in #{target.name}.')
            else:
                chev_chns.remove(target.id)
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ Chevron spawning disabled in #{target.name}.')
            await cmd.db.set_guild_settings(message.guild.id,
                                            'chevron_channels', chev_chns)
        else:
            response = discord.Embed(
                color=0xBE1931,
                title=f'❗ {message.guild.name} does not have enough humans.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #8
0
async def enablecommand(cmd: SigmaCommand, message: discord.Message,
                        args: list):
    if args:
        if not message.author.permissions_in(message.channel).manage_guild:
            response = permission_denied('Manage Server')
        else:
            cmd_name = args[0].lower()
            if cmd_name in cmd.bot.modules.alts:
                cmd_name = cmd.bot.modules.alts[cmd_name]
            if cmd_name in cmd.bot.modules.commands:
                perms = await get_all_perms(cmd.db, message)
                disabled_commands = perms['DisabledCommands']
                if cmd_name in disabled_commands:
                    disabled_commands.remove(cmd_name)
                    perms.update({'DisabledCommands': disabled_commands})
                    await cmd.db[cmd.db.db_nam].Permissions.update_one(
                        {'ServerID': message.guild.id}, {'$set': perms})
                    scp_cache.del_cache(message.guild.id)
                    response = discord.Embed(
                        color=0x77B255,
                        title=f'✅ `{cmd_name.upper()}` enabled.')
                else:
                    response = discord.Embed(color=0xFFCC4D,
                                             title='⚠ Command not disabled.')
            else:
                response = discord.Embed(color=0x696969,
                                         title='🔍 Command not found.')
    else:
        response = discord.Embed(color=0xBE1931, title='❗ Nothing inputted.')
    await message.channel.send(embed=response)
Пример #9
0
async def blockwords(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            blocked_words = await cmd.db.get_guild_settings(
                message.guild.id, 'BlockedWords')
            if blocked_words is None:
                blocked_words = []
            added_words = []
            for word in args:
                if word.lower() not in blocked_words:
                    blocked_words.append(word.lower())
                    added_words.append(word.lower())
            await cmd.db.set_guild_settings(message.guild.id, 'BlockedWords',
                                            blocked_words)
            if added_words:
                color = 0x66CC66
                title = f'✅ I have added {len(added_words)} to the blacklist.'
            else:
                color = 0x3B88C3
                title = 'ℹ No new words were added.'
            response = discord.Embed(color=color, title=title)
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='⛔ Nothing inputted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #10
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)
Пример #11
0
async def addreactor(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            if len(args) == 2:
                trigger = args[0].lower()
                if '.' not in trigger:
                    reaction = args[1].replace('<', '').replace('>', '')
                    react_triggers = await cmd.db.get_guild_settings(
                        message.guild.id, 'reactor_triggers') or {}
                    if trigger in react_triggers:
                        res_text = 'updated'
                    else:
                        res_text = 'added'
                    react_triggers.update({trigger: reaction})
                    await cmd.db.set_guild_settings(message.guild.id,
                                                    'reactor_triggers',
                                                    react_triggers)
                    response = discord.Embed(
                        color=0x66CC66,
                        title=f'✅ {trigger} has been {res_text}')
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ The trigger can\'t have a dot in it.')
            else:
                response = discord.Embed(
                    color=0xBE1931, title='❗ Invalid number of arguments.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ Nothing inputted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #12
0
async def autoroletimeout(cmd: SigmaCommand, message: discord.Message,
                          args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            try:
                timeout = abs(int(args[0]))
            except ValueError:
                timeout = None
            if timeout is not None:
                await cmd.db.set_guild_settings(message.guild.id,
                                                'AutoroleTimeout', timeout)
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ Timeout set to {timeout} seconds.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ This role is above my highest role.')
        else:
            timeout = await cmd.db.get_guild_settings(message.guild.id,
                                                      'AutoroleTimeout') or 0
            response = discord.Embed(
                color=0x696969,
                title=f'🕙 The current timeout is {timeout} seconds.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #13
0
async def massmove(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_guild:
        if args:
            movereqs = [piece.strip() for piece in ' '.join(args).split(';')]
            if len(movereqs) == 2:
                guild_vcs = [
                    vc for vc in message.guild.channels
                    if isinstance(vc, discord.VoiceChannel)
                ]
                lookup_one = movereqs[0]
                lookup_two = movereqs[1]
                vc_one = get_vc(guild_vcs, lookup_one)
                vc_two = get_vc(guild_vcs, lookup_two)
                if vc_one and vc_two:
                    membs_one = [vcm for vcm in vc_one.members if not vcm.bot]
                    for member in membs_one:
                        await member.move_to(vc_two)
                    move_title = f'✅ Moved {len(membs_one)} members to {vc_two.name}.'
                    response = discord.Embed(color=0x66CC66, title=move_title)
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ One or both of the channels weren\'t found.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ Invalid arguments. See the usage example.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No arguments given.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #14
0
async def removeinactivewarning(cmd: SigmaCommand, message: discord.Message,
                                args: list):
    if message.author == message.guild.owner:
        if message.mentions:
            if len(args) == 2:
                target = message.mentions[0]
                warn_id = args[1].lower()
                lookup = {
                    'guild': message.guild.id,
                    'target.id': target.id,
                    'warning.id': warn_id,
                    'warning.active': False
                }
                warn_data = await cmd.db[cmd.db.db_nam
                                         ].Warnings.find_one(lookup)
                if warn_data:
                    warn_iden = warn_data.get('warning').get('id')
                    await cmd.db[cmd.db.db_nam].Warnings.delete_one(lookup)
                    response = discord.Embed(
                        color=0x77B255,
                        title=f'✅ Warning {warn_iden} deleted.')
                else:
                    response = discord.Embed(
                        color=0x696969, title='🔍 Inactive warning not found.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ Both user tag and warning ID are needed.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No user targeted.')
    else:
        response = permission_denied('Server Owner')
    await message.channel.send(embed=response)
Пример #15
0
async def wfsortiechannel(cmd: SigmaCommand, message: discord.Message,
                          args: list):
    if message.author.permissions_in(message.channel).manage_channels:
        if message.channel_mentions:
            target_channel = message.channel_mentions[0]
        else:
            if args:
                if args[0].lower() == 'disable':
                    await cmd.db.set_guild_settings(message.guild.id,
                                                    'WarframeSortieChannel',
                                                    None)
                    response = discord.Embed(
                        color=0x66CC66,
                        title=f'✅ Warframe Sortie Channel disabled.')
                    await message.channel.send(embed=response)
                    return
                else:
                    return
            else:
                target_channel = message.channel
        await cmd.db.set_guild_settings(message.guild.id,
                                        'WarframeSortieChannel',
                                        target_channel.id)
        response = discord.Embed(
            color=0x66CC66,
            title=f'✅ Warframe Sortie Channel set to #{target_channel.name}')
    else:
        response = permission_denied('Manage Channels')
    await message.channel.send(embed=response)
Пример #16
0
async def boundinvites(cmd: SigmaCommand, message: discord.Message,
                       args: list):
    if message.author.guild_permissions.create_instant_invite:
        bound_invites = await cmd.db.get_guild_settings(
            message.guild.id, 'BoundInvites')
        if bound_invites:
            output_lines = []
            output_role_data = []
            for key in bound_invites:
                role_id = bound_invites.get(key)
                target_role = discord.utils.find(lambda x: x.id == role_id,
                                                 message.guild.roles)
                if target_role:
                    role_name = target_role.name
                else:
                    role_name = '{Role Missing}'
                output_role_data.append([key, role_name])
            output_role_data = sorted(output_role_data, key=lambda x: x[1])
            for key, role_name in output_role_data:
                out_line = f'`{key}`: {role_name}'
                output_lines.append(out_line)
            response = discord.Embed(color=0xF9F9F9,
                                     title='⛓ List of Bound Invites')
            response.description = '\n'.join(output_lines)
        else:
            response = discord.Embed(color=0x696969,
                                     title='🔍 No invites have been bound.')
    else:
        response = permission_denied('Create Instant Invites')
    await message.channel.send(embed=response)
Пример #17
0
async def byemessage(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            goodbye_text = ' '.join(args)
            await cmd.db.set_guild_settings(message.guild.id, 'bye_message',
                                            goodbye_text)
            response = discord.Embed(color=0x77B255,
                                     title='✅ New Goodbye Message set.')
        else:
            current_goodbye = await cmd.db.get_guild_settings(
                message.guild.id, 'bye_message')
            if not current_goodbye:
                current_goodbye = '{user_name} has left {server_name}.'
            bye_embed = await cmd.db.get_guild_settings(
                message.guild.id, 'bye_embed') or {}
            if bye_embed.get('active'):
                response = await make_bye_embed(bye_embed, current_goodbye,
                                                message.guild)
            else:
                response = discord.Embed(color=0x3B88C3,
                                         title='ℹ Current Goodbye Message')
                response.description = current_goodbye
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #18
0
async def unban(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.permissions_in(message.channel).ban_members:
        if args:
            lookup = ' '.join(args)
            target = None
            banlist = await message.guild.bans()
            for entry in banlist:
                if entry.user.name.lower() == lookup.lower():
                    target = entry.user
                    break
            if target:
                await message.guild.unban(target,
                                          reason=f'By {message.author.name}.')
                log_embed = generate_log_embed(message, target)
                await log_event(cmd.bot, message.guild, cmd.db, log_embed,
                                'LogBans')
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ {target.name} has been unbanned.')
            else:
                response = discord.Embed(
                    title=f'🔍 {lookup} not found in the ban list.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ Nothing inputted.')
    else:
        response = permission_denied('Ban permissions')
    await message.channel.send(embed=response)
async def makeemotetoggles(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_guild:
        if args:
            group_id = args[0].lower()
            has_desc = False if args[-1].lower() == 'nodesc' else True
            target_ch = message.channel_mentions[0] if message.channel_mentions else message.channel
            emote_groups = await cmd.db.get_guild_settings(message.guild.id, 'emote_role_groups') or {}
            if group_id in emote_groups:
                role_items = []
                group_roles = emote_groups.get(group_id)
                for group_role in group_roles:
                    role_item = discord.utils.find(lambda x: x.id == group_role, message.guild.roles)
                    if role_item:
                        role_items.append(role_item)
                    else:
                        group_roles.remove(group_role)
                emote_groups.update({group_id: group_roles})
                await cmd.db.set_guild_settings(message.guild.id, 'emote_role_groups', emote_groups)
                binding_data = make_binding_data(role_items)
                toggler_message_response = await make_binding_message(binding_data, message.guild, group_id, has_desc)
                toggler_message = await target_ch.send(embed=toggler_message_response)
                await fill_toggler_emotes(toggler_message, list(binding_data.keys()))
                guild_togglers = await cmd.db.get_guild_settings(message.guild.id, 'emote_role_togglers') or {}
                guild_togglers.update({str(toggler_message.id): binding_data})
                await cmd.db.set_guild_settings(message.guild.id, 'emote_role_togglers', guild_togglers)
                response = discord.Embed(color=0x66CC66, title=f'✅ Toggler {group_id} created in {target_ch.name}.')
            else:
                response = discord.Embed(color=0x696969, title=f'🔍 Group {group_id} not found.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ Missing group ID.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #20
0
async def addresponder(cmd: SigmaCommand, message: discord.Message,
                       args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            if len(args) >= 2:
                trigger = args[0].lower()
                if '.' not in trigger:
                    content = ' '.join(args[1:])
                    auto_respones = await cmd.db.get_guild_settings(
                        message.guild.id, 'ResponderTriggers') or {}
                    if trigger in auto_respones:
                        res_text = 'updated'
                    else:
                        res_text = 'added'
                    auto_respones.update({trigger: content})
                    await cmd.db.set_guild_settings(message.guild.id,
                                                    'ResponderTriggers',
                                                    auto_respones)
                    response = discord.Embed(
                        color=0x66CC66,
                        title=f'✅ {trigger} has been {res_text}')
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title='❗ The trigger can\'t have a dot in it.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ Missing message to send')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ Nothing inputted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #21
0
async def logmodule(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_guild:
        if args:
            module_name = args[0].lower()
            if module_name in cmd.bot.modules.categories:
                logged_modules = await cmd.db.get_guild_settings(
                    message.guild.id, 'logged_modules') or []
                if module_name in logged_modules:
                    result = 'disabled'
                    logged_modules.remove(module_name)
                else:
                    result = 'enabled'
                    logged_modules.append(module_name)
                await cmd.db.set_guild_settings(message.guild.id,
                                                'logged_modules',
                                                logged_modules)
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ {module_name.upper()} logging {result}.')
            else:
                response = discord.Embed(color=0xBE1931,
                                         title='❗ Non-existent module given.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No module given.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #22
0
async def deleteemoterolegroup(cmd: SigmaCommand, message: discord.Message,
                               args: list):
    if message.author.guild_permissions.manage_guild:
        if args:
            group_id = args[0].lower()
            emote_groups = await cmd.db.get_guild_settings(
                message.guild.id, 'EmoteRoleGroups') or {}
            if group_id in emote_groups:
                emote_groups.pop(group_id)
                await cmd.db.set_guild_settings(message.guild.id,
                                                'EmoteRoleGroups',
                                                emote_groups)
                response = discord.Embed(
                    color=0xFFCC4D,
                    title=f'🔥 Emote role group {group_id} has been deleted.')
            else:
                response = discord.Embed(
                    color=0x696969,
                    title=f'🔍 Couldn\'t find {group_id} in the group list.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ Nothing inputted.')
    else:
        response = permission_denied("Manage Server")
    await message.channel.send(embed=response)
Пример #23
0
async def removewarning(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_messages:
        if message.mentions:
            if len(args) == 2:
                target = message.mentions[0]
                warn_id = args[1].lower()
                lookup = {
                    'guild': message.guild.id,
                    'target.id': target.id,
                    'warning.id': warn_id,
                    'warning.active': True
                }
                warn_data = await cmd.db[cmd.db.db_nam].Warnings.find_one(lookup)
                if warn_data:
                    warn_iden = warn_data.get('warning').get('id')
                    change_data = {'$set': {'warning.active': False}}
                    await cmd.db[cmd.db.db_nam].Warnings.update_one(lookup, change_data)
                    response = discord.Embed(color=0x77B255, title=f'✅ Warning {warn_iden} deactivated.')
                    log_embed = make_log_embed(message.author, target, warn_iden)
                    await log_event(cmd.bot, message.guild, cmd.db, log_embed, 'LogWarnings')
                else:
                    response = discord.Embed(color=0x696969, title=f'🔍 {target.name} has no {warn_id} warning.')
            else:
                response = discord.Embed(color=0xBE1931, title=f'❗ Both user tag and warning ID are needed.')
        else:
            response = discord.Embed(color=0xBE1931, title=f'❗ No user targeted.')
    else:
        response = permission_denied('Manage Messages')
    await message.channel.send(embed=response)
async def listinactivewarnings(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author == message.guild.owner:
        target = message.mentions[0] if message.mentions else message.author
        if target:
            lookup = {'guild': message.guild.id, 'target.id': target.id, 'warning.active': False}
            warnings = await cmd.db[cmd.db.db_nam].Warnings.find(lookup).to_list(None)
            if warnings:
                warn_list = []
                for warning in warnings:
                    warn_id = warning.get('warning').get('id')
                    mod_id = warning.get('moderator').get('id')
                    moderator = discord.utils.find(lambda x: x.id == mod_id, cmd.bot.get_all_members())
                    if moderator:
                        moderator = moderator.name
                    else:
                        moderator = warning.get('moderator').get('name')
                    warn_time = arrow.get(warning.get('warning').get('timestamp')).format('DD. MMM. YYYY. HH:mm')
                    warn_list.append(f'`{warn_id}` by **{moderator}** on {warn_time}.')
                page = args[1] if len(args) > 1 else 1
                warn_list, page = paginate(warn_list, page, 5)
                start_range, end_range = (page - 1) * 5, page * 5
                warn_list = '\n'.join(warn_list)
                ender = 's' if len(warnings) > 1 else ''
                start = f'{target.name} has' if target.id != message.author.id else 'You have'
                response = discord.Embed(color=0xFFCC4D)
                response.add_field(name=f'тЪа {start} {len(warnings)} inactive warning{ender}.', value=warn_list)
                response.set_footer(text=f'Showing warns {start_range}-{end_range} out of {len(warnings)}.')
            else:
                start = f'{target.name} doesn\'t' if target.id != message.author.id else 'You don\'t'
                response = discord.Embed(color=0x55acee, title=f'ЁЯТа {start} have any inactive warnings.')
        else:
            response = discord.Embed(color=0xBE1931, title=f'тЭЧ No user targeted.')
    else:
        response = permission_denied('Server Owner')
    await message.channel.send(embed=response)
Пример #25
0
async def greetchannel(cmd: SigmaCommand, message: discord.Message,
                       args: list):
    if not message.author.permissions_in(message.channel).manage_guild:
        response = permission_denied('Manage Server')
    else:
        if message.channel_mentions:
            target_channel = message.channel_mentions[0]
        elif not message.channel_mentions and args:
            channel_name = ' '.join(args).lower()
            target_channel = discord.utils.find(
                lambda x: x.name.lower() == channel_name,
                message.guild.channels)
        else:
            target_channel = None
        if target_channel:
            if message.guild.me.permissions_in(target_channel).send_messages:
                await cmd.db.set_guild_settings(message.guild.id,
                                                'GreetChannel',
                                                target_channel.id)
                response = discord.Embed(
                    color=0x77B255,
                    title=f'✅ Greeting Channel set to {target_channel.name}')
            else:
                response = discord.Embed(
                    color=0xBE1931, title='❗ I can\'t write in that channel.')
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='❗ No channel targeted.')
    await message.channel.send(embed=response)
Пример #26
0
async def prefix(cmd: SigmaCommand, message: discord.Message, args: list):
    current_prefix = await cmd.db.get_prefix(message)
    if args:
        if message.author.permissions_in(message.channel).manage_guild:
            new_prefix = ''.join(args)
            if len(new_prefix) >= 2:
                if new_prefix != current_prefix:
                    prefix_text = new_prefix
                    if new_prefix == cmd.bot.cfg.pref.prefix:
                        new_prefix = None
                        prefix_text = cmd.bot.cfg.pref.prefix
                    await cmd.db.set_guild_settings(message.guild.id, 'Prefix',
                                                    new_prefix)
                    response_title = f'✅ **{prefix_text}** has been set as the new prefix.'
                    response = discord.Embed(color=0x77B255,
                                             title=response_title)
                else:
                    response = discord.Embed(
                        color=0xBE1931,
                        title=
                        '❗ The current prefix and the new one are the same.')
            else:
                response = discord.Embed(
                    color=0xBE1931,
                    title='❗ The prefix needs to be at least two character.')
        else:
            response = permission_denied('Manage Server')
    else:
        response = discord.Embed(
            color=0x3B88C3,
            title=f'ℹ **{current_prefix}** is the current prefix.')
    await message.channel.send(embed=response)
Пример #27
0
async def delselfrole(cmd: SigmaCommand, message: discord.Message, args: list):
    if message.author.guild_permissions.manage_roles:
        if args:
            lookup = ' '.join(args)
            target_role = discord.utils.find(lambda x: x.name.lower() == lookup.lower(), message.guild.roles)
            if target_role:
                role_below = bool(target_role.position < message.guild.me.top_role.position)
                if role_below:
                    selfroles = await cmd.db.get_guild_settings(message.guild.id, 'SelfRoles')
                    if selfroles is None:
                        selfroles = []
                    if target_role.id not in selfroles:
                        response = discord.Embed(color=0xBE1931, title='❗ This role is not self assignable.')
                    else:
                        selfroles.remove(target_role.id)
                        await cmd.db.set_guild_settings(message.guild.id, 'SelfRoles', selfroles)
                        response = discord.Embed(color=0x77B255, title=f'✅ {target_role.name} removed.')
                else:
                    response = discord.Embed(color=0xBE1931, title='❗ This role is above my highest role.')
            else:
                response = discord.Embed(color=0x696969, title=f'🔍 I can\'t find {lookup} on this server.')
        else:
            response = discord.Embed(color=0xBE1931, title='❗ Nothing inputted.')
    else:
        response = permission_denied('Manage Roles')
    await message.channel.send(embed=response)
Пример #28
0
async def greetdmmessage(cmd: SigmaCommand, message: discord.Message,
                         args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            greeting_text = ' '.join(args)
            await cmd.db.set_guild_settings(message.guild.id,
                                            'greet_dm_message', greeting_text)
            response = discord.Embed(color=0x77B255,
                                     title='✅ New DM Greeting Message set.')
        else:
            current_greeting = await cmd.db.get_guild_settings(
                message.guild.id, 'greet_dm_message')
            if not current_greeting:
                current_greeting = 'Hello {user_mention}, welcome to {server_name}.'
            greet_embed = await cmd.db.get_guild_settings(
                message.guild.id, 'greet_dm_embed') or {}
            if greet_embed.get('active'):
                response = await make_greet_embed(greet_embed,
                                                  current_greeting,
                                                  message.guild)
            else:
                response = discord.Embed(color=0x3B88C3,
                                         title='ℹ Current DM Greeting Message')
                response.description = current_greeting
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
async def unblockarguments(cmd: SigmaCommand, message: discord.Message,
                           args: list):
    if message.author.permissions_in(message.channel).manage_guild:
        if args:
            blocked_args = await cmd.db.get_guild_settings(
                message.guild.id, 'blocked_args')
            if blocked_args is None:
                blocked_args = []
            removed_args = []
            if args[-1].lower() == '-all':
                removed_args = blocked_args
                blocked_args = []
            else:
                for arg in args:
                    if arg.lower() in blocked_args:
                        blocked_args.remove(arg.lower())
                        removed_args.append(arg.lower())
            await cmd.db.set_guild_settings(message.guild.id, 'blocked_args',
                                            blocked_args)
            if removed_args:
                color = 0x66CC66
                title = f'✅ I have removed {len(removed_args)} arguments from the blacklist.'
            else:
                color = 0x3B88C3
                title = 'ℹ No args were removed.'
            response = discord.Embed(color=color, title=title)
        else:
            response = discord.Embed(color=0xBE1931,
                                     title='⛔ Nothing inputted.')
    else:
        response = permission_denied('Manage Server')
    await message.channel.send(embed=response)
Пример #30
0
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 = permission_denied('Manage Channels')
    await message.channel.send(embed=response)