code: def bot_has_permissions(**perms):
      
      def predicate(ctx):
          guild = ctx.guild
          me = guild.me if guild is not None else ctx.bot.user
          permissions = ctx.channel.permissions_for(me)
  
          missing = [perm for perm, value in perms.items() if getattr(permissions, perm, None) != value]
  
          if not missing:
              return True
  
          raise BotMissingPermissions(missing)
  
      return check(predicate)
docs: Similar to :func:`.has_permissions` except checks if the bot itself has
      the permissions listed.
  
      This check raises a special exception, :exc:`.BotMissingPermissions`
      that is inherited from :exc:`.CheckFailure`.