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