Python discord.ext.commands 模块,check() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用discord.ext.commands.check()

项目:Sparcli    作者:4Kaylum    | 项目源码 | 文件源码
def requiredEnabled(**kwargs):
    '''Checks to see if a certain token type's secret exists

    Parameters :: 
        token : str
            The type of token whose secret needs to exist
    '''

    def predicate(ctx):
        token = kwargs.get('enable')
        serverSettings = getServerJson(ctx.message.server.id)
        enabled = serverSettings['Toggles'][token]
        if enabled:
            return True
        else:
            raise CommandDisabled
            return False

    return commands.check(predicate)
项目:Sparcli    作者:4Kaylum    | 项目源码 | 文件源码
def needsToken(**kwargs):
    '''Checks to see if a certain token type's secret exists

    Parameters :: 
        token : str
            The type of token whose secret needs to exist
    '''

    def predicate(ctx):
        token = kwargs.get('token')
        v = getTokens()[token]

        for i, o in v.items():
            if not o:
                raise ThisNeedsAToken
        return True        
    return commands.check(predicate)
项目:PomodoroBot    作者:VicenteRD    | 项目源码 | 文件源码
def check_last(self, ctx: commands.Context, name):
        """ Shows you how long other users' last session lasted.

            :param name: The name (not the nick) of the person to check.
            Must use the name#discriminator format.
        """
        time_str = printable_time(db_manager.get_user_last_session(name))
        if time_str is None:
            time_str = "None found."

        lib.log("{} queried for {}'s last session time. Result: {}"
                .format(lib.get_author_name(ctx, True),
                        "their" if name == str(ctx.message.author)
                        else (name + "'s"), time_str))

        await self.bot.say("```{}```".format(time_str),
                           delete_after=self.bot.ans_lifespan * 3)
项目:PomodoroBot    作者:VicenteRD    | 项目源码 | 文件源码
def total(self, ctx: commands.Context, name=None):
        """ Shows you the total time a user has used the timer for.

            :param name: The name (not the nick) of the person to check.
            Must use the name#discriminator format. If none is provided, it will
            check your own record.
        """
        if name is None:
            name = ctx.message.author

        time_str = printable_time(db_manager.get_user_total(name))
        if time_str is None:
            time_str = "None found."

        name = str(name)
        lib.log("{} queried for {}'s last session time. Result: {}"
                .format(lib.get_author_name(ctx, True),
                        "their" if name == str(ctx.message.author)
                        else (name + "'s"), time_str))

        await self.bot.say("```{}```".format(time_str),
                           delete_after=self.bot.ans_lifespan * 3)
项目:aryas    作者:lattkkthxbbye    | 项目源码 | 文件源码
def in_channel(name):
    """
    Checks if command is sent in a given channel ignores high roles.
    To be used as a decorator
    :param name: name of the channel
    """
    def predicate(ctx):
        if ctx.message.channel.is_private:
            return False

        # Adapted from discord.ext.core.has_any_role
        user_roles = functools.partial(discordutils.get, ctx.message.author.roles)
        if any(user_roles(name=role) is not None for role in ['Admin', 'Moderator', 'Support']):
            return True

        return ctx.message.channel.name == name

    return commands.check(predicate)
项目:cryopodbot    作者:TGWaffles    | 项目源码 | 文件源码
def permcheck(**kwargs):
    def predicate(ctx):
        owners_ = kwargs.get('owners', [])
        check = kwargs.get('check', '')

        if type(owners_) is not list:
            owners_ = [owners_]

        if ctx.message.author.id in [owners[x] for x in owners_]:
            return True

        if check == 'dm_only' and ctx.message.server is None:
            return True

        return False

    return commands.check(predicate)
项目:Bonfire    作者:Phxntxm    | 项目源码 | 文件源码
def progress(self, ctx):
        """Provides the progress of the current song"""

        # Make sure we're playing first
        state = self.get_voice_state(ctx.message.server)
        if not state.is_playing():
            await self.bot.say('Not playing anything.')
        else:
            progress = state.current.progress
            length = state.current.length
            # Another check, just to make sure; this may happen for a very brief amount of time
            # Between when the song was requested, and still downloading to play
            if not progress or not length:
                await self.bot.say('Not playing anything.')
                return

            # Otherwise just format this nicely
            progress = divmod(round(progress, 0), 60)
            length = divmod(round(length, 0), 60)
            fmt = "Current song progress: {0[0]}m {0[1]}s/{1[0]}m {1[1]}s".format(progress, length)
            await self.bot.say(fmt)
项目:Bonfire    作者:Phxntxm    | 项目源码 | 文件源码
def summon(self, ctx):
        """Summons the bot to join your voice channel."""
        # This method will be invoked by other commands, so we should return True or False instead of just returning
        # First check if the author is even in a voice_channel
        summoned_channel = ctx.message.author.voice_channel
        if summoned_channel is None:
            await self.bot.say('You are not in a voice channel.')
            return False

        # Then simply create a voice client
        try:
            success = await self.create_voice_client(summoned_channel)
        except (asyncio.TimeoutError, discord.ConnectionClosed):
            await self.bot.say("I failed to connect! This usually happens if I don't have permission to join the"
                               " channel, but can sometimes be caused by your server region being far away."
                               " Otherwise this is an issue on Discord's end, causing the connect to timeout!")
            await self.remove_voice_client(summoned_channel.server)
            return False

        if success:
            try:
                await self.bot.say('Ready to play audio in ' + summoned_channel.name)
            except discord.Forbidden:
                pass
        return success
项目:jose    作者:lnmds    | 项目源码 | 文件源码
def __init__(self, bot):
        super().__init__(bot)

        addr = getattr(bot.config, 'MONGO_LOC', None)
        self.mongo_client = motor.motor_asyncio.AsyncIOMotorClient(addr)
        self.bot.mongo = self.mongo_client

        self.jose_db = self.mongo_client['jose']

        self.config_coll = self.jose_db['config']
        self.block_coll = self.jose_db['block']
        self.bot.block_coll = self.block_coll

        # querying the db every time is not worth it
        self.config_cache = collections.defaultdict(dict)

        # used to check if cache has all defined objects in it
        self.default_keys = None
项目:PyMiki    作者:TheGrammarJew    | 项目源码 | 文件源码
def can_use_box():
    def pred(ctx):
        if ctx.guild is None:
            return True
        if ctx.author.id == ctx.bot.owner_id:
            return True

        has_perms = ctx.channel.permissions_for(ctx.author).manage_messages
        if not has_perms:
            raise UnableToUseBox()

        return True
    return commands.check(pred)

# The tag data is heavily duplicated (denormalized) and heavily indexed to speed up
# retrieval at the expense of making inserts a little bit slower. This is a fine trade-off
# because tags are retrieved much more often than created.
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def is_owner():

    def predicate(ctx):
        if is_owner_check(ctx):
            return True
        else:
            raise errors.NotOwner

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def is_server_owner():

    def predicate(ctx):
        if is_server_owner_check(ctx):
            return True
        else:
            raise errors.NotServerOwner

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def is_voice_connected():

    def predicate(ctx):
        if not is_voice_connected_check(ctx):
            if is_server_owner_check(ctx) or utilities.get_permission(ctx, "join", id = ctx.message.author.id):
                raise errors.PermittedVoiceNotConnected
            else:
                raise errors.NotPermittedVoiceNotConnected
        return True

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def has_permissions(**permissions):

    def predicate(ctx):
        if has_permissions_check(ctx, permissions):
            return True
        else:
            raise errors.MissingPermissions

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def dm_or_has_permissions(**permissions):

    def predicate(ctx):
        if ctx.message.channel.is_private or has_permissions_check(ctx, permissions):
            return True
        else:
            raise errors.MissingPermissions

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def dm_or_has_capability(*permissions):

    def predicate(ctx):
        if ctx.message.channel.is_private or has_capability_check(ctx, permissions):
            return True
        else:
            raise errors.MissingCapability(permissions)

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def has_permissions_and_capability(**permissions):

    def predicate(ctx):
        if ctx.message.channel.is_private:
            return False
        elif not has_permissions_check(ctx, permissions):
            raise errors.MissingPermissions
        elif not has_capability_check(ctx, permissions.keys()):
            raise errors.MissingCapability(permissions.keys())
        else:
            return True

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def dm_or_has_permissions_and_capability(**permissions):

    def predicate(ctx):
        if ctx.message.channel.is_private:
            return True
        elif not has_permissions_check(ctx, permissions):
            raise errors.MissingPermissions
        elif not has_capability_check(ctx, permissions.keys()):
            raise errors.MissingCapability(permissions.keys())
        else:
            return True

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def not_forbidden():

    def predicate(ctx):
        if not_forbidden_check(ctx):
            return True
        else:
            raise errors.NotPermitted

    return commands.check(predicate)
项目:Harmonbot    作者:Harmon758    | 项目源码 | 文件源码
def is_permitted():

    def predicate(ctx):
        if is_permitted_check(ctx):
            return True
        else:
            raise errors.NotPermitted

    return commands.check(predicate)
项目:youtube    作者:FishyFing    | 项目源码 | 文件源码
def is_owner():
    return commands.check(is_owner_check)

# The permission system of the bot is based on a "just works" basis
# You have permissions and the bot has permissions. If you meet the permissions
# required to execute the command (and the bot does as well) then it goes through
# and you can execute the command.
# If these checks fail, then there are two fallbacks.
# A role with the name of Bot Mod and a role with the name of Bot Admin.
# Having these roles provides you access to certain commands without actually having
# the permissions required for them.
# Of course, the owner will always be able to execute commands.
项目:youtube    作者:FishyFing    | 项目源码 | 文件源码
def role_or_permissions(ctx, check, **perms):
    if check_permissions(ctx, perms):
        return True

    ch = ctx.message.channel
    author = ctx.message.author
    if ch.is_private:
        return False # can't have roles in PMs

    role = discord.utils.find(check, author.roles)
    return role is not None
项目:youtube    作者:FishyFing    | 项目源码 | 文件源码
def serverowner_or_permissions(**perms):
    def predicate(ctx):
        if ctx.message.guild is None:
            return False
        guild = ctx.message.guild
        owner = guild.owner

        if ctx.message.author.id == owner.id:
            return True

        return check_permissions(ctx,perms)
    return commands.check(predicate)
项目:Ruby-Bot    作者:ahuei123456    | 项目源码 | 文件源码
def is_owner():
    return commands.check(lambda ctx: is_owner_check(ctx.message))
项目:Dwarf    作者:Dwarf-Community    | 项目源码 | 文件源码
def owner():
    return commands.check(is_owner_check)
项目:Dwarf    作者:Dwarf-Community    | 项目源码 | 文件源码
def admin():
    return commands.check(is_admin_check)
项目:Dwarf    作者:Dwarf-Community    | 项目源码 | 文件源码
def serverowner():
    def predicate(ctx):
        if ctx.message.server is None:
            return False

        if ctx.message.author.id == ctx.message.server.owner.id:
            return True

        # return check_permissions(ctx, perms)
        return False
    return commands.check(predicate)
项目:lagbot    作者:mikevb1    | 项目源码 | 文件源码
def need_db(command):
    """Decorator, not check, to mark the command as needing a DB connection."""
    command._db = True
    return command
项目:lagbot    作者:mikevb1    | 项目源码 | 文件源码
def config_attr(attr):
    return commands.check(lambda _: getattr(config, attr, None) is not None)
项目:lagbot    作者:mikevb1    | 项目源码 | 文件源码
def owner_or_permissions(**perms):
    return commands.check(lambda ctx: check_permissions(ctx, perms))
项目:lagbot    作者:mikevb1    | 项目源码 | 文件源码
def dm_only():
    return commands.check(lambda ctx: ctx.guild is None)
项目:Socrates    作者:Curlybear    | 项目源码 | 文件源码
def is_owner():
    return commands.check(lambda ctx: is_owner_check(ctx.message))
项目:Socrates    作者:Curlybear    | 项目源码 | 文件源码
def is_authorized_staff():
    return commands.check(lambda ctx: is_authorized_staff_check(ctx.message))
项目:Luna    作者:Moonlington    | 项目源码 | 文件源码
def is_owner():
    return commands.check(lambda ctx: is_owner_check(ctx.message))
项目:Luna    作者:Moonlington    | 项目源码 | 文件源码
def role_or_permissions(ctx, check, **perms):
    if check_permissions(ctx, perms):
        return True

    ch = ctx.message.channel
    author = ctx.message.author
    if ch.is_private:
        return False  # can't have roles in PMs

    role = discord.utils.find(check, author.roles)
    return role is not None
项目:Luna    作者:Moonlington    | 项目源码 | 文件源码
def mod_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name in ('Luna Mod', 'Luna Admin', 'Bot Commander', 'Master Assassin'), **perms)

    return commands.check(predicate)
项目:Luna    作者:Moonlington    | 项目源码 | 文件源码
def admin_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name in ('Luna Admin', 'Master Assassin'), **perms)
    return commands.check(predicate)

# These two roles are for a specific server, just use 'Luna mod' and 'Luna
# admin'
项目:AutomaBot    作者:73VW    | 项目源码 | 文件源码
def bot_main(token, queue, channel, prefix, desc):
    """Run bot."""
    bot = AutomaBot(get=queue, update_channel=channel,
                    command_prefix=prefix,
                    description=desc, self_bot=False)

    @bot.command(pass_context=True)
    @commands.check(is_owner)
    async def sleep(ctx):
        await bot.change_presence(status=discord.Status.dnd, afk=True)
        msg = 'Going to sleep. See you :wave:'
        for comm in bot.commands:
            if comm is not "wakeup":
                bot.commands[comm].enabled = False
        await bot.say(msg)

    @bot.command(pass_context=True, hidden=True)
    @commands.check(is_owner)
    async def wakeup(ctx):
        for comm in bot.commands:
            if comm is not "wakeup":
                bot.commands[comm].enabled = True
        await bot.change_presence(status=discord.Status.online, afk=False)
        msg = 'Goooooooooood morniiing vietnammmmmm :bomb:'
        await bot.say(msg)

    await bot.start(token)
项目:Inkxbot    作者:InkxtheSquid    | 项目源码 | 文件源码
def is_owner():
    return commands.check(lambda ctx: is_owner_check(ctx.message))

# The permission system of the bot is based on a "just works" basis
# You have permissions and the bot has permissions. If you meet the permissions
# required to execute the command (and the bot does as well) then it goes through
# and you can execute the command.
# If these checks fail, then there are two fallbacks.
# A role with the name of Bot Mod and a role with the name of Bot Admin.
# Having these roles provides you access to certain commands without actually having
# the permissions required for them.
# Of course, the owner will always be able to execute commands.
项目:Inkxbot    作者:InkxtheSquid    | 项目源码 | 文件源码
def role_or_permissions(ctx, check, **perms):
    if check_permissions(ctx, perms):
        return True

    ch = ctx.message.channel
    author = ctx.message.author
    if ch.is_private:
        return False # can't have roles in PMs

    role = discord.utils.find(check, author.roles)
    return role is not None
项目:Inkxbot    作者:InkxtheSquid    | 项目源码 | 文件源码
def mod_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name == 'Bot Commander', **perms)
    return commands.check(predicate)
项目:Inkxbot    作者:InkxtheSquid    | 项目源码 | 文件源码
def admin_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name == 'Bot Commander', **perms)
    return commands.check(predicate)
项目:Inkxbot    作者:InkxtheSquid    | 项目源码 | 文件源码
def TO_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name in ('TO_Crew', 'Head TO', 'Staff'), **perms) #these roles are needed if you're a TO
    return commands.check(predicate)
项目:storcord    作者:memework    | 项目源码 | 文件源码
def gay_only():
    return commands.check(lambda m: m.author.id in \
        (162819866682851329, 97104885337575424, 150745989836308480))
项目:discordbot.py    作者:rauenzi    | 项目源码 | 文件源码
def is_owner():
    return commands.check(lambda ctx: is_owner_check(ctx.message))

# The permission system of the bot is based on a "just works" basis
# You have permissions and the bot has permissions. If you meet the permissions
# required to execute the command (and the bot does as well) then it goes through
# and you can execute the command.
# If these checks fail, then there are two fallbacks.
# A role with the name of Bot Mod and a role with the name of Bot Admin.
# Having these roles provides you access to certain commands without actually having
# the permissions required for them.
# Of course, the owner will always be able to execute commands.
项目:discordbot.py    作者:rauenzi    | 项目源码 | 文件源码
def role_or_permissions(ctx, check, **perms):
    if check_permissions(ctx, perms):
        return True

    ch = ctx.message.channel
    author = ctx.message.author
    if ch.is_private:
        return False # can't have roles in PMs

    role = discord.utils.find(check, author.roles)
    return role is not None
项目:discordbot.py    作者:rauenzi    | 项目源码 | 文件源码
def mod_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name in ('Bot Mod', 'Bot Admin'), **perms)

    return commands.check(predicate)
项目:discordbot.py    作者:rauenzi    | 项目源码 | 文件源码
def admin_or_permissions(**perms):
    def predicate(ctx):
        return role_or_permissions(ctx, lambda r: r.name == 'Bot Admin', **perms)

    return commands.check(predicate)
项目:discordbot.py    作者:rauenzi    | 项目源码 | 文件源码
def is_in_servers(*server_ids):
    def predicate(ctx):
        server = ctx.message.server
        if server is None:
            return False
        return server.id in server_ids
    return commands.check(predicate)
项目:SESTREN    作者:SirThane    | 项目源码 | 文件源码
def bot_owner(ctx):
    def check():
        return ctx.author.id == 125435062127820800
    return check()