async def unwarn(cmd, message, args): if not check_kick(message.author, message.channel): out_content = discord.Embed( color=0xDB0000, title='⛔ Users With Kick Permissions Only.') await message.channel.send(None, embed=out_content) return if not args or not message.mentions: return target = message.mentions[0] target_id = str(target.id) try: warned_users = cmd.db.get_settings(message.guild.id, 'WarnedUsers') except KeyError: cmd.db.set_settings(message.guild.id, 'WarnedUsers', {}) warned_users = {} if target_id in warned_users: del warned_users[target_id] cmd.db.set_settings(message.guild.id, 'WarnedUsers', warned_users) response = discord.Embed( color=0x66CC66, title=f'✅ {target.name} has been removed from the warning list.') else: response = discord.Embed( color=0x0099FF, title=f'ℹ {target.name} is not in the list of warned users.') await message.channel.send(None, embed=response)
async def warnlimit(cmd, message, args): if not check_kick(message.author, message.channel): out_content = discord.Embed(color=0xDB0000, title=':no_entry: Server Admin Only.') await cmd.bot.send_message(message.channel, None, embed=out_content) return if not args: try: warn_limit = cmd.db.get_settings(message.server.id, 'WarnLimit') except KeyError: cmd.db.set_settings(message.server.id, 'WarnLimit', 2) warn_limit = 2 out_content = discord.Embed(color=0x0099FF, title='ℹ Current Warning Limit Is ' + str(warn_limit)) await cmd.bot.send_message(message.channel, None, embed=out_content) else: try: new_limit = abs(int(args[0])) except: out_content = discord.Embed(color=0xDB0000, title=':exclamation: Invalid Number') await cmd.bot.send_message(message.channel, None, embed=out_content) return cmd.db.set_settings(message.server.id, 'WarnLimit', new_limit) out_content = discord.Embed(color=0x0099FF, title='ℹ New Limit Set To ' + str(new_limit)) await cmd.bot.send_message(message.channel, None, embed=out_content)
async def kick(cmd, message, args): channel = message.channel if message.mentions: user_q = message.mentions[0] if message.author is not user_q: if check_kick(message.author, channel): await cmd.bot.kick(user_q) out_content = discord.Embed(color=0x993300, title=':boot: User **' + user_q.name + '** has been kicked!') await cmd.bot.send_message(message.channel, None, embed=out_content) else: out_content = discord.Embed( color=0xDB0000, title= '⛔ Insufficient Permissions. Users with Kick permissions only.' ) await cmd.bot.send_message(message.channel, None, embed=out_content) else: await cmd.bot.send_message(message.channel, cmd.help()) else: await cmd.bot.send_message(message.channel, cmd.help())
async def kick(cmd, message, args): if not check_kick(message.author, message.channel): response = discord.Embed( title='⛔ Unpermitted. Kick Permissions Needed.', color=0xDB0000) else: if message.mentions: target = message.mentions[0] if target.id == message.author.id: response = discord.Embed(title='⛔ You can\'t kick yourself.', color=0xDB0000) else: if len(args) > 1: kick_reason = ' '.join(args[1:]) else: kick_reason = 'No reason given' await target.kick( reason= f'Kicked by {message.author.name}#{message.author.discriminator}.\n{kick_reason}' ) response = discord.Embed( title=f'👢 {target.name} has been kicked.', color=0x993300) # Logging Part try: log_channel_id = cmd.db.get_settings( message.guild.id, 'LoggingChannel') except: log_channel_id = None if log_channel_id: log_channel = discord.utils.find( lambda x: x.id == log_channel_id, message.guild.channels) if log_channel: log_response = discord.Embed( color=0x993300, timestamp=arrow.utcnow().datetime) log_response.set_author(name=f'A User Has Been Kicked', icon_url=user_avatar(target)) log_response.add_field( name='👢 Kicked User', value= f'{target.mention}\n{target.name}#{target.discriminator}', inline=True) author = message.author log_response.add_field( name='🛡 Responsible', value= f'{author.mention}\n{author.name}#{author.discriminator}', inline=True) log_response.add_field( name='📄 Reason', value=f"```\n{kick_reason}\n```", inline=False) log_response.set_footer(text=f'UserID: {target.id}') await log_channel.send(embed=log_response) else: response = discord.Embed(title='❗ No user targeted.', color=0xDB0000) await message.channel.send(embed=response)
async def warns(cmd, message, args): try: warned_users = cmd.db.get_settings(message.guild.id, 'WarnedUsers') except KeyError: cmd.db.set_settings(message.guild.id, 'WarnedUsers', {}) warned_users = {} if not check_kick(message.author, message.channel): target = message.author target_id = str(target.id) if target_id not in warned_users: embed = discord.Embed(color=0x0099FF, title='ℹ You Were Never Warned') else: embed = discord.Embed(color=0x0099FF) embed.add_field(name='ℹ You Were Warned For...', value='```\n' + '\n'.join(warned_users[target_id]['Reasons']) + '\n```') await message.channel.send(None, embed=embed) return if not message.mentions: if len(warned_users) == 0: embed = discord.Embed(color=0x0099FF, title='ℹ There Are No Warned Users') else: warn_user_list = [] for key in warned_users: for member in message.guild.members: if member.id == warned_users[key]['UserID']: warn_user_list.append(member.name) embed = discord.Embed(color=0x0099FF) embed.add_field(name='ℹ List of Warned Users', value='```\n' + ', '.join(warn_user_list) + '\n```') else: target = message.mentions[0] target_id = str(target.id) if target_id not in warned_users: embed = discord.Embed(color=0x0099FF, title='ℹ ' + target.name + ' Was Never Warned') else: embed = discord.Embed(color=0x0099FF) embed.add_field(name='ℹ ' + target.name + ' Was Warned For...', value='```\n' + '\n'.join(warned_users[target_id]['Reasons']) + '\n```') await message.channel.send(None, embed=embed)
async def kick(cmd, message, args): channel = message.channel if args[0]: user_q = message.mentions[0] if message.author is not user_q: if check_kick(message.author, channel): try: await cmd.bot.kick(user_q) await cmd.bot.send_message(message.channel, 'User **' + user_q.name + '** has been kicked.') except Exception as e: cmd.log.error(e) await cmd.bot.send_message(message.channel, str(e)) else: response = await cmd.bot.send_message(message.channel, 'Only a user with **Kick** privileges can use this command. :x:') await asyncio.sleep(10) await cmd.bot.delete_message(response)
async def warn(cmd, message, args): if not check_kick(message.author, message.channel): out_content = discord.Embed( color=0xDB0000, title='⛔ Users With Kick Permissions Only.') await cmd.bot.send_message(message.channel, None, embed=out_content) return if not args or not message.mentions: return target = message.mentions[0] warning_text = ' '.join(args).replace(target.mention, '')[1:] if not warning_text or warning_text == '': warning_text = 'No Reason Given' try: warn_limit = cmd.db.get_settings(message.server.id, 'WarnLimit') except KeyError: cmd.db.set_settings(message.server.id, 'WarnLimit', 2) warn_limit = 2 try: warned_users = cmd.db.get_settings(message.server.id, 'WarnedUsers') except KeyError: cmd.db.set_settings(message.server.id, 'WarnedUsers', {}) warned_users = {} if target.id in warned_users: warn_data = { 'UserID': warned_users[target.id]['UserID'], 'Warns': warned_users[target.id]['Warns'] + 1, 'Reasons': warned_users[target.id]['Reasons'] + [warning_text], 'Timestamp': arrow.utcnow().timestamp } else: warn_data = { 'UserID': target.id, 'Warns': 1, 'Reasons': [warning_text], 'Timestamp': arrow.utcnow().timestamp } warned_users.update({target.id: warn_data}) if warned_users[target.id]['Warns'] > warn_limit: await cmd.bot.kick(target) out_content_local = discord.Embed(color=0x993300) out_content_local.add_field( name=':boot: User **' + target.name + '** has been kicked!', value='Reasons:\n```\n' + '\n'.join(warned_users[target.id]['Reasons']) + '\n```') await cmd.bot.send_message(message.channel, None, embed=out_content_local) out_content_to_user = discord.Embed(color=0x993300) out_content_to_user.add_field( name=':boot: You have been kicked!', value='Reasons:\n```\n' + '\n'.join(warned_users[target.id]['Reasons']) + '\n```') await cmd.bot.send_message(target, None, embed=out_content_to_user) del warned_users[target.id] else: warned_users.update({target.id: warn_data}) out_content_to_user = discord.Embed(color=0xFF9900) out_content_to_user.add_field( name='⚠ Warning ' + str(warned_users[target.id]['Warns']) + '/' + str(warn_limit) + ' on ' + message.server.name, value='Reason:\n```\n' + warning_text + '\n```') await cmd.bot.send_message(target, None, embed=out_content_to_user) out_content_local = discord.Embed( color=0xFF9900, title='⚠ Warning ' + str(warned_users[target.id]['Warns']) + '/' + str(warn_limit) + ' for ' + target.name) await cmd.bot.send_message(message.channel, None, embed=out_content_local) cmd.db.set_settings(message.server.id, 'WarnedUsers', warned_users)