コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: kick.py プロジェクト: Blitzfrog/Sickle
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())
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
ファイル: warn.py プロジェクト: Blitzfrog/Sickle
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)